一、折半查找
版本一:递归
/*
说明:v为数组,low为数组的下界,high为上界,x为需要查找的元素
*/
int binsearch(int v[],int low, int high, int x)
{
int mid = (low+high) / 2;
if(x == v[mid])
return mid;
if(low >= high)
return -1;
if(x < v[mid])
return binsearch(v,low,mid-1,x);
else
return binsearch(v,mid+1,high,x);
}
版本二:用while循环
/*
说明:x为需要查找的元素,v为数组,n为数组的大小。
*/
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;
}
浙公网安备 33010602011771号