在快速排序中,我們可以用不同方式選擇樞軸值。隨機選擇一個樞軸值就是其中之一。它說,當我們隨機選擇樞軸值時,它最大限度地減少了有O(n^2)的機會。任何人都可以解釋它是如何發生的?有什麼缺點嗎?隨機選擇樞軸的優勢
1
A
回答
3
如果在所有可能的輸入(置換)上對期望值進行平均,那麼隨機和非隨機選擇都會產生一個算法,其期望運行時間爲Theta(n * log(n))。
實際上,並非所有的輸入排列都是同等可能的。特別是當你先選擇給出Theta(n^2)複雜性時,你經常會得到排序或接近排序的數組。最重要的是,如果您的挑選算法是確定性的,攻擊者可以制定一個令人討厭的排列,使您的算法保持二次方,從而實現拒絕服務。
選擇隨機元素作爲樞軸防範這些非隨機情況。
1
有一個數學證明,隨機數據透視的預期運行時間是Theta(n logn)。
wiki page有一個部分。
相關問題
- 1. 隨機化快速排序選擇25%-75%的樞軸選擇
- 2. 樞軸選擇查詢
- 3. 樞軸選擇已更改
- 4. 快速排序和樞軸隨機
- 5. 快速排序與隨機樞軸
- 6. 雄辯的選擇樞軸和更新
- 7. 隨機優化行動選擇
- 8. MySQL選擇隨機X條目 - 優化
- 9. 動態選擇查詢與樞軸
- 10. 爲重複鍵算法選擇樞軸
- 11. 如何在QuickSort中選擇樞軸值?
- 12. 選擇隨機
- 13. 隨機選擇
- 14. 隨機選擇
- 15. 隨機選擇
- 16. 樞軸作爲三個隨機數的中位數
- 17. 選擇標籤的性能優勢?
- 18. 選擇隨機值
- 19. sql - 隨機選擇
- 20. 隨機詞選擇
- 21. 隨機選擇Combobox?
- 22. 選擇隨機行
- 23. 選擇隨機數
- 24. 選擇隨機表
- 25. PYTHON - 隨機選擇
- 26. Laravel樞軸列篩選
- 27. C隨機樞軸快速排序(改進分區功能)
- 28. 快速排序分區爲什麼隨機數據樞軸?
- 29. SAS/SQL隨機選擇隨機行
- 30. 從隨機到不隨機選擇列
此答案超載期限預計運行時間。一種情況實際上是關於平均情況複雜性(即假設輸入是隨機的並且可能性相同)並且與問題無關,另一種情況是更恰當地使用該術語:無論輸入如何,只有算法的隨機選擇會影響運行時如尼莫的答案)。 – 2013-02-08 19:11:09
@Confusius確實。一點不準確可以節省大量的解釋(但你可以做得過分)。 –