二分查找代码可以通过迭代或递归来实现:
迭代:
public boolean rank(int k , int[] array)
{
int lo = 0;
int hi = array.length();
int mid = (lo+hi)/2;
while(lo<=hi)
{
if(k<array[mid])
hi=mid-1;
else if(k>array[mid])
lo=mid+1;
else
return true;
}
return false;
}
递归:
public boolean rank(int k, int lo, int hi){
if(hi<lo)
return false;
int mid = (lo+hi)/2;
if (k<array[mid])
return rank(k,lo,mid-1);
else if(k>array[mid])
return rank(k,mid+1,hi);
else
return true;
}