-1
A
回答
0
分而治之貢獻了log(n)因子。您將數組分成半個log(n)次,每次執行時,對於每個段,必須在兩個已排序的數組上進行合併。合併兩個排序的數組是O(n)。該算法只是走上兩個陣列,然後走上滯後的那個陣列。
+0
謝謝!我的無論如何,它都會分而治之。我不知道我會得到多少(如果有的話)分。 – juice 2013-05-10 05:24:10
0
你得到的遞歸是r(n)= O(n)+ r(roundup(n/2))+ r(舍入(n/2)。 問題是你不能使用Masters Theorem解決這個問題的原因是因爲四捨五入,所以你可以用數學方法或者使用一些類似黑客的解決方案,如果你的輸入不是兩個數的冪只是「吹起來」,那麼你就可以使用r上的主定理(n)= O(n)+ 2r(n/2)。顯然這導致O(nlogn)。函數merge()本身在O(n)中,因爲在最壞的情況下你需要n-1個比較。
相關問題
- 1. 我們可以做快速排序與n logn最壞情況的複雜性?
- 2. 什麼是合併的關鍵比較的最壞情況數量?
- 3. 特殊情況下插入排序的最壞情況比較
- 4. Redis:它是否仍然O(logN)從排序集中獲得最高分?
- 5. 在合併排序算法的分析中,'6n'(6n(logn + 1)= 6nlogn + 6n)是什麼?
- 6. 什麼是最壞的情況大哦使用list.retainAll
- 7. 什麼是隨機搜索的最壞情況
- 8. 斯坦因算法的最壞情況輸入是什麼?
- 9. 冒泡排序最壞的情況下,最好的情況下和平均情況下的複雜性
- 10. 爲什麼在合併排序中合併操作是O(n)?
- 11. 最壞情況下運行時間爲O,Ω爲最佳情況,但爲什麼有時在最壞情況下使用Ω?
- 12. 爲什麼這仍然是可選的?
- 13. 爲什麼仍然是空的數據
- 14. Splay樹:最壞情況序列
- 15. 這種情況下最適合的認證技術是什麼?
- 16. 什麼是最適合這種情況的android異常?
- 17. 這種情況下最適合的語言/技術是什麼?
- 18. 爲什麼在不導入Foundation的情況下仍然可以正常工作?
- 19. 最佳情況和最壞情況下的時間複雜度
- 20. 大O - 最壞情況/最好的情況下確認
- 21. 什麼是Javascript框架最適合這種情況?
- 22. 爲什麼插入排序比合並排序更快?
- 23. 我不知道爲什麼,但我只是中間元素仍然未排序
- 24. 在Java競爭條件下可能發生的最壞情況是什麼?
- 25. 給定函數的最壞情況時間複雜度是什麼?
- 26. 爲什麼在某些情況下不能合併()和gt()?
- 27. 默認情況下,爲什麼git會在合併後提交?
- 28. 二元合併排序&天然合併排序
- 29. 在我的情況下合併的情況下選擇什麼方式?
- 30. 合併然後進行排序或排序然後合併會更快嗎?
從反向列表開始,手動運行算法。計算你的操作次數。 – 2013-05-10 04:25:22
這是一個http://stackoverflow.com/questions/7801861/why-is-merge-sort-worst的副本-case-run-time-on-log-n – Bull 2013-05-10 04:35:02