如果我将数组大小除以3,那么二进制搜索的运行时间。
答案 0 :(得分:1)
使用二进制搜索,您通常会在排序的随机访问数据结构(如数组)中进行搜索,方法是在每次比较时丢弃一半数组。因此,在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))
。
答案 1 :(得分:0)
假设您的数组已排序,它仍然是log n
。