你如何计算二进制搜索算法的大哦?

时间:2011-05-23 08:45:58

标签: algorithm big-o time-complexity binary-search

我正在寻找数学证明,而不仅仅是答案。

2 个答案:

答案 0 :(得分:12)

recurrence relation of binary search is(在最坏的情况下)

T(n) = T(n/2) + O(1)

使用Master's theorem

enter image description here

  • n是问题的大小。
  • a是递归中的子问题数。
  • n / b是每个子问题的大小。 (这里假设所有子问题的大小基本相同。)
  • f(n)是在递归调用之外完成的工作的成本,其中包括划分问题的成本和将解决方案合并到子问题的成本。

这里a = 1,b = 2且f(n)= O(1)[常数]

我们有f(n)= O(1)= O(n log b a

=> T(n)= O(n log b a log 2 n))= O(log 2 n )

答案 1 :(得分:7)

证明非常简单:如果您还没有找到要查找的项目,则每次递归时您将剩余项目数减半。因为你只能将一个 n 的数字递归地分成两半,最多是log 2 n )次,这也是递归的边界:

  

2·2·...·2·2 = 2 x n ⇒log 2 (2 x )= x ≤log 2 n

这里 x 也是递归的次数。并且本地成本为O(1),总共为O(log n )。