题目:用二分法查找已排序的大小为n的数组A是否存在value,如果存在返回下标,否则返回-1。
在《编程珠玑》里多次强调二分查找的重要性和容易错误之处,而且看了很多面试题目都有关于二分查找的题目,觉得二分查找很重要,因此贴上一个正确的二分查找代码。
#include <iostream>
#include <string>
using namespace std;
int binarl_search(int *A, int k){
len = sizeof(A);
int low = 0, high = len - 1;
while(low <= high){
mid = (low + high)/2;
if(A[mid] == k)
return mid;
else if(A[mid] < k)
high = mid - 1;
else
low = mid + 1;
}
return -1;
}