原理:二分查找算法也是一种分治算法,每次将规模变成一半。
性能:它的本质是进行的二叉搜索树查找,所以最坏情况是时间复杂度即树高O(n) (最坏情况的查找次数logn+1向下取整)。
缺点:只能查找有序表
- 循环实现
int binarySearch(int a[], int key, int n)
{
int p, r, mid;
p = 0;
r = n-1;
while(p <= r){
mid = (p+r)/2;
if(key == a[mid])
return mid;
else if(key < a[mid]) {
r = mid-1;
}
else
p = mid+1;
}
cout << key << " not found" << endl;
return -1;
}