各種ソートアルゴリズムコード
2205 ワード
#include
#include
using namespace std;
//
// , , 。
// , 。
void bubbleSort(int *arr,int start,int end)
{
int temp=0;
for(int i=0;i=arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
//
// , , 。
void insertionSort(int *arr,int start,int end)
{
for(int i=1;i=end)
return;
while(i=t)
j--;
if(iarr[i])
{
arr[index]=arr[i];
arr[i]=temp;
index=i;
i=2*index+1;
}
else
{
break;
}
}
}
void minHeapSort(int *arr,int start,int end)
{
//
for(int i=(end-1)/2;i>=0;i--)
adjustMinHeap(arr,i,end);
cout<0;i--)
{
int temp=arr[i];
arr[i]=arr[0];
arr[0]=temp;
adjustMinHeap(arr,0,i-1);
}
}
//
void adjustMaxHeap(int *arr,int index,int end)
{
int i=2*index+1; //
while(i=0;i--)
{
adjustMaxHeap(arr,i,end);
}
cout<0;i--)
{
int temp=arr[0];
arr[0]=arr[i];
arr[i]=temp;
adjustMaxHeap(arr,0,i-1);
}
}
//
// n/2 ,
// , 。
void shellSort(int *arr,int start,int end)
{
int i,j,gap;
for(gap=(end+1)/2;gap>0;gap/=2)
{
//
for(i=0;i=end)
return;
mergeSort(arr,start,(start+end)/2);
mergeSort(arr,(start+end)/2+1,end);
mergeArray(arr,start,(start+end)/2,end);
}
void sort(int *arr,int num)
{
clock_t t1=clock();
mergeSort(arr,0,num-1);
clock_t t2=clock();
cout<