//quick sort
//stl中也有現成的高速排序演算法。內部實現採用了下面技巧
//1)樞軸的選擇採取三數取中的方式
//2)後半段採取迴圈的方式實現
//3)高速排序與插入排序結合
#include#include#includeusing namespace std;
//這一版本號是最簡單實現版本號。對於高速排序的優化主要有下面幾個方面:
//1)樞軸的選擇。若樞軸選取不全適。比方,若每次遞迴時,兩個子區間中的乙個為空,則高速排序將退化為氣泡排序
//關於樞軸的選擇有多種:取最後乙個元素、取第乙個元素、三數取中、九數取中、隨機值等
//2)還有一方面是對迭代過程的優化。降低交換次數,降低遞迴深度等;
templateint partion1(vector& vec,int start,int end)
templateint partion2(vector& vec,int start,int end)
return start;
}templateint partion3(vector& vec,int start,int end)
return start;
}//以上是三種對樞軸的優化方法。無非就是避免高速排序惡化
//下面是避免不必要的交換過程
templateint partion4(vector& vec,int start,int end)
vec[start]=key;
return start;
}templatevoid qsort1(vector& vec,int start,int end)
//遞迴過程須要出棧入棧,成本較高,並且可能棧溢位。假設可能的話最好以迴圈方式取代遞迴
templatevoid qsort2(vector& vec,int start,int end)
int main()
; vectorvec(a,a+10);
quicksort(vec);
for(int i=0;icout
}
C 高速排序演算法
根據網上看到的高速排序演算法介紹,進行的 實現。目前的 還是比較粗糙和繁瑣的,等待後續改進 下面的文字介紹部分 於 一 高速排序演算法的基本特性 時間複雜度 o nlgn 最壞 o n 2 空間複雜度 o nlgn 不穩定。高速排序是一種排序演算法,對包括n個數的輸入陣列,平均時間為o nlgn 最...
高速排序 與 隨機高速排序 演算法分析
高速排序是由東尼 霍爾所發展的一種排序演算法。在平均狀況下,排序 n 個專案要 n log n 次比較。在最壞狀況下則須要 n2 次比較,但這樣的狀況並不常見。其實,高速排序通常明顯比其它 n log n 演算法更快,由於它的內部迴圈 inner loop 能夠在大部分的架構上非常有效率地被實現出來...
幾個高速排序演算法
鴿巢排序,排序位元組串 寬位元組串最快的排序演算法,計數排序的變種 將計數緩衝區大小固定,少一次遍歷開銷 速度是stl中std sort的20多倍,更重要的是實現極其簡單!缺點是需要乙個size至少等於待排序陣列取值範圍的緩衝區,不適合int等大範圍資料 c c code void pigeonho...