二分搜索
很多企业很喜欢在笔试题或者面试的时候问二分搜索,在看了编程之美后,回顾,写下了这个让很多人不以为是,但却经常出错的code
int binarySearch(int *a, int len, int val)
{
int beg, mid, end;
beg = 0;
end = len - 1;
while (beg < end - 1)
{
mid = beg + (end - beg) / 2;
if(a[mid] <= val) beg = mid;
else end = mid;
}
if(a[end] == val) return end;
else if(a[beg] == val) return beg;
return -1;
}