您如何计算二分查找算法的大哦?

| 我正在寻找数学证明,而不仅仅是答案。     
已邀请:
二进制搜索的递归关系为(在最坏的情况下)
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)。     

要回复问题请先登录注册