二分法网上有很多资料了,这里盗用一下算法第四版的代码.
int lo = 0;
int hi = a.length-1;
while(lo<=hi)//为什么是<=而不是<
{
int lo = 0;
int hi = a.length-1;
while(lo<=hi)
{
int mid = lo+(hi-lo)/2;
if (key<a[mid]) hi = mid-1;
else if (key>a[mid]) lo = mid+1;
else return mid;
}
}
这里要注意的是lo<=hi,如果两个数据查找没有等于要出问题。