各種ソートアルゴリズムコード

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<