int BinarySearch(int a[],int nLow,int nHigh,int k){
//实现非递归的折半查找
//输入:一个升序数组a[nLow...nHigh]和查找键k
//输出:一个数组元素的下标,该元素等于k;如果没有这样一个元素,则返回-1
int l=nLow,r=nHigh,mid;
while (l<=r)
{
mid=(l+r)/2;
if (k==a[mid])return mid;
else if(k<a[mid]) r=mid-1;
else l=mid+1;
}
return -1;
}
int BinarySearchRecur(int a[],int nLow,int nHigh,int k){
//实现递归的折半查找
//输入:一个升序数组a[nLow...nHigh]和查找键k
//输出:一个数组元素的下标,该元素等于k;如果没有这样一个元素,则返回-1
if (nLow>nHigh) return -1;
else
{
int mid=(nLow+nHigh)/2;
if (k==a[mid])
return mid;
else if (k<a[mid])
return BinarySearchRecur(a,nLow,mid-1,k);
else
return BinarySearchRecur(a,mid+1,nHigh,k);
}
}