快排的一些思考!

2021-07-12 01:26:37 字數 577 閱讀 2758

關於快排!

自己曾經寫了這樣的乙個演算法

#include#includeint quicksort(int a,int left,int right)//default left hand as benchmark(基準數)

while(i!=j)

{ while(a[j]>=benchmark && i

但是對結構體的測試讓我為難了很久,

排序錯誤!

只有左半部分或者右半部分進行了排序!

反覆思考了很久,

找了找網上很多人寫的快排演算法,發現將二分找基準數的演算法和遞迴的過程進行分開可以有效的

避免這個問題!

int quicksort(emp* t,int left,int right)

{ int ioc;

if(left=benchmark.score && i最後想要說些別的,如果出現了排序演算法上的錯誤!並且你可以保證你的排序演算法沒有錯誤!

為什麼不去考慮下對儲存資料的變數的定義?

全域性變數的影響?

以及呼叫函式對排序的影響?

有時候小小的double和int會影響很多很多!!!!

對歸併 堆排 快排的一些總結。

這三個演算法的理論時間複雜度都是nlogn,但是區別還是很大的。這三個演算法裡,實際效率最低的是堆排序,因為在每次調整大根堆的時候,都把底層元素交換到了根,然後再調整,而底層元素又不可能大於原根元素的兩個孩子節點,因此非等概率調整,做了很多次無效交換,因此實際效率最低。歸併排序時間效率最高,並且穩定...

一些排序方法(堆排,歸併,快排,計數排)

感覺學校演算法課挺水的,不過程式設計這東西還是要靠自己想,自己琢磨,老師也只能幫你指引下。菜鳥我還是好好敲 吧。計數排序 其他排序方法都是依靠元素之間的比較從而產生次序,而計數排序是依靠元素計算,得出自己在序列中的位置 計數排序 設元素均為非負整數 include include using nam...

關於快排指標的幾點思考

近來復盤劍指offer21題的時候,得到了新的體會,特來分享一下。我們都知道 maybe you do not know 應用快速排序時,我們需要維護兩個指標,但是具體指標初始化在 具體如何移動,終止條件又是如何,我們來具體 一下。一般而言,這兩個指標有兩種形式,一種是一前一後,當然另一種也是一前一...