在這個link中,作者說get(index)
在Java ArrayList中爲O(1),而在LinkedList中爲O(n/2),因爲它需要遍歷該條目。 ArrayList中的get操作需要一段時間,因爲ArrayList可以訪問所有索引。但是,我不明白O(n/2)的LinkedList。我被教導的方式是,當你使用大哦符號時,你應該寫下它,而不用常數,以便更容易地向其他人解釋;即O(n)而不是O(2n)。是不是O(n)也是最壞情況下運行時間的界限?這樣,使用O(n)對我來說更有意義,因爲您正在搜索的元素可能處於最後。有誰知道作者爲什麼包含n/2?這是O(N)表示中需要一個常數的情況嗎?
1
A
回答
1
你說得對,O(n/2)與O(n)完全一樣。博客文章作者可能試圖傳達一些關於如何平均穿過n/2元素以獲得任何特定(隨機選擇)索引的方法。但這是對大O符號的濫用。
公平地給筆者,他或她似乎非常清楚,爲O(n)= O(N/2):
爲了從一個特定的索引中刪除元素...
ArrayList
執行復制操作,這使得它接近爲O(n),同時LinkedList
需要遍歷到該點,這也使得它爲O(n/2)
通過使用「也」,海報似乎是承認這一點。
+0
謝謝,這是有道理的 – committedandroider 2014-09-18 19:05:06
相關問題
- 1. 這是我需要一個仿函數的情況嗎?
- 2. 這是backbone.js中的正常情況嗎?
- 3. 我真的需要爲這種情況設計兩個表嗎?
- 4. 在這種情況下需要ReactDOM.findDOMNode嗎?
- 5. 在這種情況下,鎖是否需要一個整數?
- 6. 這是最常見的情況嗎?
- 7. 我需要一個控制器來處理這種情況嗎?
- 8. 這個函數是O(N + M)還是O(N * M)?
- 9. 是a.insert(0,x)和o(n)函數嗎? a.append是一個O(1)函數嗎? Python
- 10. 這是foldM的情況嗎?
- 11. 爲什麼插入排序的最佳情況是O(n)&not O(n^2)?
- 12. O(n^2)中是O(mn)嗎?
- 13. 如何證明Quicksort是O(n * lg n)有特殊情況?
- 14. 在這個mysql示例中只有一列需要主表嗎?
- 15. 這裏需要一個哈希表嗎?
- 16. 這是需要類型的測試對於這種情況
- 17. 這種情況是一個大數據項目嗎?
- 18. 對於一些常數c,階乘(floor(log(n)))是大O(n^c)嗎?
- 19. 在這種情況下,我需要不可變的Map嗎?
- 20. 在這種情況下,我真的需要互斥鎖嗎?
- 21. 在這種情況下,我真的需要調用QFile :: close()嗎?
- 22. 在小於O(N)的情況下生成N個準隨機數
- 23. 我需要一個多線程WPF應用程序用於這種情況嗎?
- 24. 快速帶O的最壞的情況下(N log n)的
- 25. 如果基本情況是O(n),什麼是再發生?
- 26. 一般情況下需要模板參數的情況是否完整?
- 27. 需要一個SQL查詢語句,這種情況下
- 28. 以下情況需要office 2007宏嗎?
- 29. 截取表需要很長時間,這是正常的嗎?
- 30. 爲什麼這個函數/循環O(log n)而不是O(n)?
是的,O(n/2)與O(n)完全一樣。不要相信你在互聯網上閱讀的所有內容。 ;) – 2014-09-18 18:57:15
雖然這篇文章寫得很好。我想他知道,因爲他在另一部分使用了O(n)。只是好奇他爲什麼包括n/2而不是n。他一定有這樣做的理由 – committedandroider 2014-09-18 19:00:10
作爲一個評論:當你想說關於n/2元素,但不想大驚小怪的條款,這是非常頻繁地濫用符號和寫的東西,如n/2 + O(1)個元素,甚至n/2 + o(n)。 – 2014-09-18 19:12:56