排序演算法----快速排序
阿新 • • 發佈:2019-02-05
排序演算法的思路是通過一趟排序將陣列分為兩部分,一部分比另一部分都要小,以此遞迴即可得到最終的排序。複雜度nlogn
void Qsort(int a[], int low, int high)//low high代表最低的下標和最高的下標 { if(low >= high) { return; } int first = low;//將first初始化為最低下表 int last = high;//將last初始化為最高下標 int key = a[first];//將第一個數記作參考值(即比較大小以此數為基準) while(first < last)//遍歷開始 { //將大於key的放在key後面 while(first < last && a[last] >= key) { --last; } a[first] = a[last];//將小於key的值放到首位 //將小於key的放在key前面 while(first < last && a[first] <= key) { ++first; } a[last] = a[first]; } //迴圈結束將a[first]賦值key a[first] = key; Qsort(a, low, first-1);//遞迴對各部分排序 Qsort(a, first+1, high); }