0
A
回答
1
如果您使用Hoare的原始select
算法,您可以得到與Quicksort相同的糟糕的最壞情況性能。
如果您使用中位數的中位數,那麼您會限制最差的情況,但代價是在大多數典型情況下會變慢。
您可以使用中值的中位數來查找Quicksort的數據透視表,這將具有大致相同的效果 - 限制最差情況,但代價是在大多數情況下速度較慢。當然,對於排序(一般來說),每個分區操作是O(N),並且您期望執行有關log(N)分區操作的操作,因此您可以獲得大約O(N log N)的總體複雜度。
通過中值查找,您還希望執行大約O(log N)個步驟,但您只考慮上一步中可能包含中值(或四分位數等您所關心的)的分區。您預計這些分區的大小在每一步都會被分成大約兩個分區,而不是始終必須對整個輸入進行分區,因此您最終得到的整體約爲O(N)複雜度而不是O(N log N)。
[注意,本,我有點濫用大O表示法來表示預期複雜而大O真的應該代表上限(即,最壞情況下)的複雜性。]
2
當您使用方法partition
在Quicksort(請參閱鏈接中的方法)來查找中位數時,基於此位置的具有正確位置的元素的方法返回索引,只需檢查包含中位數的選定部分。
例如,數組長度爲5,因此中位數爲3.分區方法返回2,因此您只需要檢查數組的上部2到5,而不是整個數組作爲Quicksort。
相關問題
- 1. 漸近運行時行爲
- 2. 斯卡拉方法的漸近行爲
- 3. 比較次數中位數quicksort
- 4. STL排序vs中位數
- 5. 函數的漸近比較
- 6. 算法縮減(中位數,quicksort)
- 7. 漸近記法
- 8. QuickSort,使用中位數作爲樞軸。不正確排序
- 9. Lisp中的Quicksort奇怪的行爲?
- 10. C++漸近分析
- 11. 漸近複雜度
- 12. 算法的漸近運行時間
- 13. 循環的漸近運行時間
- 14. 執行Quicksort
- 15. 漸近分析 - 高階函數
- 16. 如何找到函數的漸近階?
- 17. 二次函數的漸近緊束縛
- 18. Gnuplot:擬合數據的漸近曲線
- 19. 數據結構 - 漸近分析(C++)
- 20. 中位數quicksort中位數的最壞情況時間複雜度是多少?
- 21. 數據結構 - 運行時間和漸近邊界
- 22. 漸近分析不等式
- 23. 漸近表示法理解
- 24. 大O符號和漸近
- 25. pylab plot顯示漸近線
- 26. 漸近複雜度python
- 27. 漸近證明的例子
- 28. 這兩個漸近有效
- 29. 爲什麼quickSort運行速度較慢?
- 30. 使用中位數規則的QuickSort中的錯誤
什麼是「中位數」(根據「Quicksort和..」)?一個適當的鏈接/參考將是很好的。透視方法的選擇並不會使其不能快速排序。 – user2864740