您的位置:首页 > 其它

算法导论 练习 2.3-5

2016-04-15 22:15 281 查看

题目:

说明二分查找算法最坏情况下的时间复杂度为什么是 Θ(lgn)\Theta(lgn),并给出代码

解答:

二分查找每次舍弃一半,比较操作耗时是线性时间,所以很显然,递归式是 T(n)=T(n/2)+Θ(1)T(n)=T(n/2)+\Theta(1),为了方便计算,不妨把Θ(1)\Theta(1) 换成 CC

T(n)=T(n/2)+C=T(n/4)+C+C=.....=T(1)+Clgn=Θ(lgn)T(n)=T(n/2)+C=T(n/4)+C+C=.....=T(1)+Clgn=\Theta(lgn)

后面学了主定理以后会发现这个其实就是Case2

代码:

int binary_search(int A[], int length, int v) {
int low  = 0;
int high = length;

int mid;
while (low < high) {
mid = (low + high) / 2;

if (A[mid] == v)
return mid;
else if (A[mid] < v)
low = mid + 1;
else
high = mid;
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: