在网上没找到java版合适的二分查找代码,自己写了个,备忘:
/**
* 二分查找,返回index
*/
public int search(int a[], int key) {
if(a==null || a.length==0){
return -1;
}
int beginIndex=0;
int endIndex=a.length;
while(true){
int halfIndex=(int)Math.ceil(beginIndex+((endIndex-beginIndex)*0.5));
if(a[halfIndex]==key){
return halfIndex;
}
if(endIndex-beginIndex<=1){
return -1;
}
if(a[halfIndex]>key){
endIndex=halfIndex;
}else{
beginIndex=halfIndex;
}
}
}