【发布时间】:2020-08-24 21:49:57
【问题描述】:
对已排序数组执行二分查找具有O(logN) 复杂性,其中 N 是数组中的元素数。
但是,如果我们在排序(链接)列表中执行二进制搜索,那么复杂度是多少?
我们正在对范围的中间元素进行logN 比较,但要达到范围,复杂度为O(N),因为列表不是随机访问结构。
时间复杂度也是如此:
1)logN * O(N) = O(N) 将logN 视为常数?或
2)logN*O(N) = O(NlogN) 在所有情况下都意味着logN = O(logN)?
这里什么是正确的? 1 还是 2?
【问题讨论】:
-
为什么不遍历
O(N)中的整个列表?执行二分搜索将是O(NlogN),因为您可以访问O(N)中的元素。 -
@fas 我的问题纯粹是渐近分析。它与实际评估使用哪种数据结构无关
标签: algorithm data-structures big-o complexity-theory binary-search