那麼是否有可能編寫一個返回對象而不是索引的二進制搜索的實現?我需要這樣,整個任務完成在O(logn)
時間,而不是花更多的時間,然後調用collection.get()後,我只得到索引,所以複雜度,然後變成O(nlogn)
。實現返回對象而不是索引的二進制搜索?
1
A
回答
2
二進制搜索將需要一個隨機訪問容器。如果您知道該索引,則應該可以訪問O(1)中的項目。如果情況並非如此,那麼二進制搜索首先是錯誤的算法。
在這種情況下,您使用的是一個ArrayList
,它是一個數組的封裝,確實提供了高效的隨機訪問。
1
你不會在任何事情做的二進制搜索,但一個O(1)隨機存取集合:否則搜索時間會遠遠超出O(日誌(N))。 O(1)集合中不存在所謂的「額外時間」:無論如何,您的替換必須執行相同的步驟。
相關問題
- 1. 實現二進制搜索
- 2. 實現二進制搜索
- 3. 二進制搜索的返回值
- 4. Python中的二進制搜索實現
- 5. JAVA - 二進制搜索 - 鍵值返回索引
- 6. 二進制搜索是/是二進制搜索貪婪算法?
- 7. 二進制搜索一直返回-1?
- 8. 二進制搜索,返回鍵值。
- 9. 二進制搜索返回目標
- 10. 二進制搜索C#實現
- 11. 二進制搜索Java實現算法
- 12. 二進制搜索樹實現(C++)
- 13. 二進制搜索樹實現
- 14. 在C++中實現二進制搜索
- 15. 二進制搜索對象列表?
- 16. 二進制搜索數組對象
- 17. 二進制搜索索引位置
- 18. 二進制搜索樹搜索返回空
- 19. 二進制搜索
- 20. 二進制搜索
- 21. 二進制搜索
- 22. 二進制搜索
- 23. 二進制搜索樹內的二進制搜索樹
- 24. 線性搜索或二進制搜索或二叉搜索樹
- 25. viewWith標籤不返回搜索對象
- 26. 爲什麼鍵而不是二進制搜索樹中的值?
- 27. 二進制搜索樹,搜索方法
- 28. 二進制搜索樹搜索操作
- 29. 二進制搜索樹 - 搜索範圍
- 30. Swift二進制搜索樹搜索
爲什麼調用'get'使複雜度O(nlog(n))? – user2357112
它是什麼類型的集合? –
@ user2357112因爲您連續解析集合以便獲得我猜測的對象。這就像你有一個指向項目的指針,只是它在集合中的索引 –