我正在寻找数学证明,而不仅仅是答案。
答案 0 :(得分:12)
recurrence relation of binary search is(在最坏的情况下)
T(n) = T(n/2) + O(1)
这里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 )。