【发布时间】:2015-11-11 08:17:32
【问题描述】:
那么是否可以编写一个返回对象而不是索引的二进制搜索实现?我需要这样,所以整个任务在 O(logn) 时间内完成,而不是在我得到索引后调用 collection.get() 花费更多时间,这样复杂度就变成了 O(nlogn)。
【问题讨论】:
-
为什么调用
get会使复杂度 O(nlog(n))? -
它是什么类型的集合?
-
@user2357112 因为您连续解析集合以获取我猜的对象。这就像你有一个指向项目的指针,只是它在集合中的索引
-
二分搜索需要一个随机访问容器。如果您知道索引,您应该能够在 O(1) 中找到该项目。如果不是这种情况,那么二进制搜索首先就是错误的算法。
-
那么在这种情况下 get 只是一个数组访问,所以它是 O(1)。
标签: java time-complexity binary-search