小编Har*_*ron的帖子

在使用此算法的最坏情况下,二进制搜索会进行多少次比较?

您好,下面是我的二进制搜索实现的伪代码:

Input: (A[0...n-1], K)
begin
   l ? 0; r ? n-1
   while l ? r do
      m ? floor((l+r)/2)
      if K > A[m] then l ? m+1
      else if K < A[m] then r ? m-1 else return m
      end if 
   end while
   return -1 // key not found
end
Run Code Online (Sandbox Code Playgroud)

我只是想知道如何计算这个实现在最坏情况下对大小为n的排序数组进行的比较次数?

比较次数是否= lg n + 1?还是别的什么?

arrays algorithm complexity-theory binary-search

18
推荐指数
3
解决办法
5万
查看次数

递归关系:T(n)= T(n/2)+ n

嗨,我试图通过伸缩解决以下复发关系,但我被困在最后一步.

T(N) = T(N/2) + N              T(1)=0
T(N/2) = T(N/4) + N/2
T(N/4) = T(N/8) + N/4
...
T(2) = T(1) + 2

T(N)= T(1) + N + N/2 + N/4
Run Code Online (Sandbox Code Playgroud)

我认为答案是nlogn,但我不知道如何将上述解释为nlogn.我可以看到我正在做logn步骤但是n来自哪里?

recurrence

4
推荐指数
2
解决办法
2万
查看次数