我運行了一些測試,發現quicksort實際運行速度越慢,列表排序越清晰,這相當反直覺!我已閱讀維基百科上的quicksort算法,但我不明白爲什麼需要更長的時間排序越多。任何幫助,將不勝感激!快速排序在排序列表上花費更長時間
-4
A
回答
3
非隨機快速排序通常會選擇第一個元素作爲主元素;當列表已經排序時,這將導致列表被分成一個空的左側列表和右側列表,其中包含n-1元素。相同的行爲將在每次遞歸調用發生,並且總運行時間將是Ñ + n-1個 + N-2 + ... + 1 =爲O(n^2)。
1
你指的是QuickSort的一個衆所周知的問題。解決問題的一個方法是使用除第一個元素之外的元素作爲主元素。
這StackExchange條目真的好寫了關於快速排序一般:https://cs.stackexchange.com/questions/3/why-is-quicksort-better-than-other-sorting-algorithms-in-practice
本文去深入得多,路程大約需要爲已排序列表和途徑問題落實的工作這種快速排序異常。 http://www.csie.ntu.edu.tw/~b93076/p847-sedgewick.pdf
相關問題
- 1. 爲什麼快速排序按降序排序和升序排序需要更長的時間
- 2. 快速排序不排序
- 3. Python過濾器()和排序()花費太長時間
- 4. 通過查詢進行排序花費的時間太長
- 5. 在雙鏈表上快速排序
- 6. C++快速排序運行時間
- 7. 瞭解合併排序和快速排序的運行時間
- 8. 運行合併排序和快速排序的線性時間
- 9. Bubble排序和快速排序的運行時間比較
- 10. 快速排序數據表
- 11. 快速HTML表格排序?
- 12. ArrayList排序時間最長的序列
- 13. 帶鏈接列表的快速排序
- 14. 使用鏈接列表快速排序
- 15. Java快速排序返回部分排序列表
- 16. 長列表排序
- 17. 如何排序比快速排序更快的整數數組?
- 18. 快速排序(JAVA)
- 19. 的快速排序
- 20. 的快速排序
- 21. perl快速排序
- 22. 對它的排序 - 快速排序
- 23. 快速排序,以結構排序
- 24. 快速排序每次不排序
- 25. 警告而排序與快速排序
- 26. 快速排序的Python排序麻煩
- 27. 快速排序比慢的std ::排序
- 28. 使用快速排序排序數組
- 29. 快速排序升序
- 30. 以第一個元素爲快速排序的快速排序
如果您需要幫助,請發佈您的代碼。我也認爲這個問題更適合[程序員](http://programmers.stackexchange.com/)。 – Renan
基本上在一個排序列表中,快速排序將在開始時將緩衝列表。 – njzk2
維基百科文章的這一特定部分解釋了最壞情況下的計算http://en.wikipedia.org/wiki/Quicksort#Average-case_analysis_using_recurrences – njzk2