二分查找的实现是returns对象而不是索引?

Implementation of binary search that returns object instead of index?

那么是否可以编写一个 returns 对象而不是索引的二分查找实现?我需要它,所以整个任务在 O(logn) 时间内完成,而不是在我得到索引后调用 collection.get() 花费更多时间,这样复杂性就变成了 O(nlogn).

二进制搜索需要随机访问 container.If 你知道索引,你应该能够在 O(1) 中找到项目。如果不是这种情况,那么二分查找首先就是错误的算法。

在这种情况下,您使用的是 ArrayList,它是数组的包装器,确实提供了高效的随机访问。

除了 O(1) 随机访问集合外,您不会对任何东西进行二分搜索:否则搜索时间将远远超过 O (log(N))。所谓的 'extra time' 在 O(1) 集合中是不存在的:您的替代者无论如何都必须执行相同的步骤。