高速排序演算法C 實現

2021-09-07 12:11:59 字數 1072 閱讀 7066

//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...