题目:
说明二分查找算法最坏情况下的时间复杂度为什么是 Θ(lgn) ,并给出代码
解答:
二分查找每次舍弃一半,比较操作耗时是线性时间,所以很显然,递归式是 T(n)=T(n/2)+Θ(1) ,为了方便计算,不妨把 Θ(1) 换成 C
后面学了主定理以后会发现这个其实就是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;
}