排序
选择排序包括堆排序等。
冒泡排序 O(n2)
View Code
void MySwap(int &a, int &b) { char temp; temp=a; a=b; b=temp; } void Bubble_Sort(int* a, int n) { int i,j; bool Ischanged; for (i=0;i<n;i++) { Ischanged= false; for (j=n-1;j>i;j--) { if (a[j]<a[j-1]) { MySwap(a[j],a[j-1]); Ischanged = true; } } while (!Ischanged) {break;} } }
快速排序 O(n*log2n)
View Code
void MySwap(int &a, int &b) { char temp; temp=a; a=b; b=temp; } void QuickSort(int *a, int begin, int end) { int x=begin,y=end; int k = a[begin]; if(begin>=end) return; while(x!=y) { while (y>x&&a[y]>k) {y--;} MySwap(a[y],a[x]); while(y>x&&a[x]<k) {x++;} MySwap(a[x],a[y]); } QuickSort(a,begin,x-1); QuickSort(a,x+1,end); }
希尔排序
堆排序