之前写的插入排序,合并排序,堆排序,快速排序,计数排序算法,C++源码,发出来,大家共同学习。^_^
//排序算法汇总练习 #include "stdafx.h" #includeusing namespace std; void InsertSort();//声明插入排序函数 void MergeSort(int num[],int left,int right);//声明合并排序函数 void Merge(int num[],int left,int right);//声明合并排序中要用到的合并函数 void HeapSort();//声明堆排序函数 void BuildHeap();//声明堆排序中用到的建立堆函数 void HeapIfy(int i);//声明建立堆时要用到的保证堆性质的函数 void QuickSort(int start,int end);//声明快速排序函数 int Partition(int start,int end);//声明快速排序中用到的分割函数 void CountingSort();//声明计数排序函数 int num[5]; int main() { for(int i=0;i<=4;i++) cin>>num[i]; int length=sizeof(num)/sizeof(num[0]); CountingSort(); //QuickSort(0,length-1); //HeapSort(); //InsertSort(); //MergeSort(num,0,4); for(int i=0;i<5;i++) cout< =0&&num[j]>key) { num[j+1]=num[j]; j--; } num[j+1]=key; } } //合并排序函数 void MergeSort(int num[],int left,int right) { if(left =num[n]) temp[i++]=num[n++]; } if(m>j) { while(n<=right) temp[i++]=num[n++]; } else { while(m<=j) temp[i++]=num[m++]; } for(i=left;i<=right;i++) { num[i]=temp[i]; } } //堆排序函数,注意堆排序时考虑树节点排序是从1开始,数组下标从0开始,所以相应减1 void HeapIfy(int i,int length) { int l=2*i; int r=2*i+1; int largest,temp; if(num[l-1]>num[i-1]&&l<=length) largest=l; else largest=i; if(num[r-1]>num[largest-1]&&r<=length) largest=r; if(largest!=i) { temp=num[i-1]; num[i-1]=num[largest-1]; num[largest-1]=temp; HeapIfy(largest,length); } } void BuildHeap() { int length=sizeof(num)/sizeof(num[0]); for(int i=length/2;i>=1;i--) HeapIfy(i,length); } void HeapSort() { int length=sizeof(num)/sizeof(num[0]); int temp; BuildHeap(); for(int i=length;i>=1;i--) { temp=num[i-1]; num[i-1]=num[0]; num[0]=temp; HeapIfy(1,i-1); } } //快速排序算法函数 int Partition(int start,int end) { int x=num[start]; int i=start; int j=end; int temp; while(num[i] x){ j--; } if(i =0;l--) { numTemp[temp[num[l]]-1]=num[l]; temp[num[l]]--; } for(int m=0;m