各类排序算法代码

#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<<"最小堆:";
	 for(int i=0;i<8;i++)
		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<<"最大堆:";
	 for(int i=0;i<8;i++)
		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<<"耗时"<

你可能感兴趣的:(C++)