二进制搜索的时间复杂度?

Time Complexity of Binary Search?

如果我将数组大小除以 3,运行 二进制搜索的时间

假设您的数组已排序,它仍然是 log n

使用二进制搜索,您通常会在排序的随机访问数据结构(例如数组)中进行搜索,每次比较时都会丢弃数组的一半。因此,在 k 个步骤中,您可以有效地覆盖 2^k 个条目。这会产生最多 log2(n)n 个元素的复杂度。

对于 landau 符号,对数的底消失了,因为它是常数:O(log2(n)) = O(log(n) / log(2)) = O(log(n))

现在,如果由于某种原因,您不仅可以丢弃一半的值,而且可以丢弃三分之二的值,因为您始终知道针最终会落在哪三分之一处,这意味着您可以覆盖 3^k 许多k 步中的条目。

因此,你得到 log3(n)。但这再次降低到与 log(3) 相同的时间复杂度是一个常数:O(log3(n)) = O(log(n)/log(3)) = O(log(n)).