问题描述
|
我正在寻找数学证明,而不仅仅是答案。
解决方法
二进制搜索的递归关系为(在最坏的情况下)
T(n) = T(n/2) + O(1)
使用大师定理
n是问题的大小。
a是递归中子问题的数量。
n / b是每个子问题的大小。 (这里假设所有子问题的大小基本相同。)
f(n)是在递归调用之外完成的工作的成本,其中包括划分问题的成本以及将解决方案合并到子问题的成本。
这里a = 1,b = 2,f(n)= O(1)[常数]
我们有f(n)= O(1)= O(nlogba)
=> T(n)= O(nlogba log2 n))= O(log2 n)
,证明非常简单:如果您没有找到要查找的项目,则每次递归都将剩余项目的数量减半。而且由于最多只能将n个数递归地分为两半(n)次,因此这也是递归的边界:
2·2····2·2 = 2x≤n⇒log2(2x)= x≤log2(n)
这里x也是递归数。而当地成本为O(1),则总计为O(log n)。