1、循环实现二分查找
int erfenSearch(int a[],int k,int n)
{
int left=0;
int right=n-1;
int mid;
while(left<=right)
{
mid=(left+right)/2;
if(k<a[mid]) right=mid-1;
else if (k>a[mid]) left=mid+1;
else return mid;
}
return -1;
}
2、递归实现二分查找
如果查找的数字在数组内,返回所在位置;否则返回-1;
int f(int l,int r,int k)
{
if(l<=r)
{
int mid=(l+r)/2;
if(a[mid]==k)
{
return mid;
}
else if(k<a[mid])
{
f(l,mid-1,k);
}
else
{
f(mid+1,r,k);
}
}
else
return -1;
}