原理:二分查找算法也是一種分治算法,每次將規模變成一半。
性能:它的本質是進行的二叉搜索樹查找,所以最壞情況是時間複雜度即樹高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;
}