快速排序C語言
阿新 • • 發佈:2019-02-11
思路:快速排序是對氣泡排序的一種優化,通過確定一個標誌位來從左右兩邊對無序數列進行劃分,然後遞迴實現,直到無法再劃分,即是排序結果。時間複雜度O(nlog2n),不穩定。
int partition(int * data,int i,int j) { int temp = data[i]; while(i < j) { while(data[j] >= temp&&i < j) j--; if(i < j) data[i] = data[j]; while(data[i] <= temp&&i < j) i++; if(i < j) data[j] = data[i]; } data[i] = temp; return i; } void sort(int * data,int i,int j) { int k; if(i < j) { k = partition(data,i,j); sort(data,i,k-1); sort(data,k+1,j); } }