有些人可能已經在這個可愛的文章跌跌撞撞 - http://igoro.com/archive/quicksort-killer/ \關於快速排序殺手
什麼是真正有趣的是他如何修復快速排序爲O(N日誌N)對定義的對手來執行。
快速排序可能會選擇中間元素作爲每個步驟的支點,因此總是會將輸入序列完美分割爲兩半。中位數可以在O(N)運行時間中確定性地找到,因此總運行時間總是O(N log N)。
我的問題是線性時間中值尋找算法會不會使用相同的比較函數並在O(N^2)而不是O(N)中執行?
編輯:
準確地說:我質疑它採用類似於快速排序,它會使用相同的比較函數作爲一個的策略基於分區的中值選擇算法的複雜性快速排序使用。這個對手在O(N)中如何運作?
重新編輯:比較函數與複雜度無關,中值選擇爲O(N)。 – 2010-11-28 23:30:07