0
A
回答
1
這是日誌因爲樹的每個級別將您的問題分成兩部分。
例如,考慮這組數據:
{ 1, 2, 3, 4, 5, 6, 7, 8 }
第一級可能是
{ 1, 2, 3, 4 }, { 5, 6, 7, 8 }
第二級:
{ 1, 2 }, { 3, 4 }, { 5, 6 }, { 7, 8 }
第三級:
{ 1 }, { 2 }, { 3 }, { 4 }, { 5 }, { 6 }, { 7 }, { 8 }
在這裏用8個值,登錄(8)= 3,並且有在樹3倍的水平。
也看到這些其他StackOverflow的問題更多:
- 「Why is the height of a balanced binary tree log(n)? (Proof)」 - 答案遵循類似的靜脈the answer是Amadan張貼在這個問題上。
- 「Search times for binary search tree」 - 包含一些漂亮的ASCII藝術,並檢查最佳/最差的情況。
1
讓我們以二分查找爲例。假設您有64個元素的排序列表,並且您正在搜索特定的元素。在每次迭代中,您將數據集減半。通過您的數據集有1元的時候,你已經減半它的6倍(算上箭頭,而不是數字):
64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1
這樣做的原因是,64 = 2^6
,其中2
是基礎(你鴻溝數據集在每次迭代中分2部分),指數爲6
(因爲您在6次迭代中達到底部)。還有另一種方式來寫這篇文章,因爲冪有其對數倒數:
64 = 2^6
6 = log2 64
所以我們可以看到,迭代次數與元素數量的基礎二對縮放。
相關問題
- 1. 二進制插入排序和複雜性
- 2. 二進制multiplcation大O符號複雜
- 3. 使用鏈接列表的二進制堆的複雜性
- 4. 二進制無效操作有int和複雜int
- 5. 複製二進制文件
- 6. 在O(log(n))複雜性中更改二進制堆元素的優先級
- 7. 二叉樹搜索的複雜性
- 8. 時間複雜度,二進制(搜索)樹
- 9. 二進制搜索未排序數組的時間複雜度
- 10. 遞增二進制計數器的時間複雜度?
- 11. 如何產生複雜的非二進制樹?
- 12. 讀/寫一個複雜的結構爲二進制文件
- 13. erlang將複雜的二進制結構轉換爲JSON
- 14. C++二進制搜索樹 - 複雜類型
- 15. 二進制搜索的最差情況時間複雜度
- 16. 在python中讀取複雜的二進制文件
- 17. 深度複製嘗試
- 18. 十進制嘗試解析
- 19. 聲納測試和二進制屬性,他們做什麼?
- 20. 二進制和線性搜索
- 21. COM接口和二進制兼容性
- 22. 二進制序列和自動屬性
- 23. 複雜性和搜索
- 24. Drupal和後端複雜性
- 25. 有向圖和複雜性
- 26. 反射和複雜屬性
- 27. 嘗試從二進制文件中讀取非Java基元
- 28. 嘗試從C#字符串轉換爲SQL二進制
- 29. get java.lang.StringIndexOutOfBoundsException嘗試二進制文本轉換時出錯
- 30. 嘗試檢查樹是否爲二進制搜索樹
謝謝你,這最好/最壞的情況呢?我們可以說,如果我們搜索的元素位於總底部,那麼comlexity就是log2(size),如果它在頂部它是O(1)? – pengj
最壞的情況是你必須通過*整個樹,這會給你一個O(大小)的複雜度,其中size是樹中的節點數,在這種情況下沒有日誌 – user2314737
正如@ user2314737正確指出的那樣,最糟糕的情況是一個[簡併樹](http://en.wikipedia.org/wiki/Binary_tree#Types_of_binary_trees),它基本上是一個[鏈表](http://en.wikipedia.org/wiki/Linked_list )。 –