那么是否可以编写一个返回对象而不是索引的二分查找实现呢?我需要它,所以整个任务在 O(logn)
时间内完成,而不是在我得到索引后调用 collection.get() 花费更多时间,这样复杂性就变成了 O (nlogn)
.
最佳答案
二进制搜索需要一个随机访问容器。如果您知道索引,您应该能够在 O(1) 中找到该项目。如果不是这种情况,那么二分查找首先就是错误的算法。
在这种情况下,您使用的是 ArrayList
,它是数组的包装器,确实提供了高效的随机访问。
关于java - 返回对象而不是索引的二进制搜索的实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33641322/