有人能解釋爲什麼快速排序的最好情況運行時不是線性的?有沒有辦法使quicksort linear的最佳運行時間?如果是這樣,爲什麼他們通常不用於實踐?尋找澄清快速排序的算法複雜
0
A
回答
1
你應該至少通過維基鏈接已經消失了......他們都與圖ñ動畫這是很容易理解這種解釋。
0
快速排序運行在爲O(n 2 )時間最壞的情況下,但最好/平均爲O(n log n)的。儘管它的最壞情況更嚴重,但它在實踐中表現優於排序和合並排序(最差情況下的O(nlogn)排序)。
排序只能在線性時間內運行,除非它們已經排序,並且這僅適用於排序的最好情況爲O(n),如insertion sort。
0
當然,你可以先檢查輸入是否已排序,並立即返回,如果它是。這產生了具有線性最佳情況複雜度的算法。但是最後你會得到一個「Modified Quicksort」而不是「Quicksort」。
0
快速排序是直接比較分選方法。每個這樣的方法在每個步驟上使用二元決策(即直接比較)以在分類的兩個可能結果之間分支。所有可能的N個元素數組的排序都是N!並且因此能夠輸出這些結果中的每一個的二叉決策樹的最低高度是log(N!),但可以證明,儘管O(log(N!))= O(N *日誌(N))。所以沒有直接比較排序算法可能比這個算法複雜得多。
因此,如快速排序是這樣的算法的一個例子其可以從不具有比O(N *日誌(N))的複雜性較低,所以它不能是線性的。
相關問題
- 1. 快速排序算法的複雜度
- 2. 快速排序的複雜性計算
- 3. haskell快速排序的複雜性?
- 4. 快速排序的複雜性
- 5. 尋找素數的快速算法?
- 6. TSQL - 尋找代碼澄清
- 7. 尋找在C++快速排序/插入排序組合誤差
- 8. 快速排序算法的UnicodeDecodeError
- 9. 快速的Java澄清需要學生
- 10. 排序算法的時間複雜度
- 11. 排序算法的複雜性
- 12. 快速排序算法Python錯誤
- 13. 快速排序算法改進
- 14. 快速排序算法穩定性
- 15. 快速排序算法行爲奇怪
- 16. 與快速排序算法混淆
- 17. 與快速排序算法混淆C#
- 18. 快速排序算法不起作用
- 19. 快速排序算法不靈
- 20. 用java快速排序算法(netbeans)
- 21. 快速排序算法不起作用
- 22. 快速排序算法拋出StackOverflowException
- 23. 快速排序算法(遞歸)
- 24. 尋找ABAdressbook上的指針和澄清
- 25. 快速排序算法改進,如果更多的重複鍵
- 26. 尋找算法來計算h指數快速
- 27. 什麼是最快的快速排序 - 排序算法的排名表?
- 28. 快速排序最差情況下的時間複雜度?
- 29. 尋找澄清返回值行爲
- 30. 尋找關鍵節點的快速算法是什麼?
聽起來像一個「直接的問題」 *如果你知道我的意思...... – LeleDumbo 2013-02-26 07:21:56
我不知道你的意思。如果你認爲這是作業,我可以向你保證它不是。任何有效的輸入都會有幫助。 – 2013-02-26 07:25:17