/* *快速排序:1、設(shè)k=a[0],將k挪到適當(dāng)位置,使得比k小的元素都在k左邊,比k大的元素都在k右邊, 和k相等的,不關(guān)心在k左右出現(xiàn)均可(0(n)時間完成) 2、把k左邊的部分快速排序 3、把k右邊的部分快速排序 */ #include <iostream> using namespace std; void swap(int & a,int & b) { int tmp; tmp= a; a = b; b = tmp; } void QuickSort(int a[],int s,int e) { if(s >= e)//如果要排的元素只有一個,什么也不做 return ; int k = a[s];//k為基準(zhǔn)點 int i = s, j =e; while(i != j) { while(i < j && a[j] >= k) --j; swap(a[i],a[j]); while(i < j && a[i] <= k) ++i; swap(a[i],a[j]); }//處理完畢后,a[i] = k QuickSort(a,s,i-1);//把k左邊的部分快速排序 QuickSort(a,i+1,e);//把k右邊的部分快速排序 } int a[10] = {25,96,65,48,51,24,12,39,91,24}; int b[10]; int main() { int size = sizeof(a)/sizeof(int); QuickSort(a,0,size-1);//進行快速排序 for(int i= 0; i<size; ++i) { cout << a[i] << ","; } cout << endl; return 0; }
新聞熱點
疑難解答