- 基本思想:
- 确定查找区间的中点位置 mid = (low+high)/2;
- 将待查找的值x与V[mid]比较;
- 如果x<V[mid] 则知x必定位于V[mid]的左边区间;
- 如果x>V[mid] 则知x必定位于V[mid]的右边区间;
- 如果x=V[mid] 则直接返回mid;
从初始查找的[0,n-1]区间开始,每经过一次当前查找值与中点数值的比较,就可以确定是否找到,如果没找到就再次缩小查找范围,直到查找区间为空为止。
int binsearch(int x,int v[],int n)
{
int low,high,mid;
low = 0;
high = n-1;
while(low<=high)
{
mid = (low+high)/2;
if(x<v[mid])
high = mid-1;
else if(x>v[mid])
low = mid+1;
else
return mid;
}
return -1;
}