您的位置:首页 > 其它

二分搜索

2017-07-24 11:14 134 查看
//二分查找的前提:有序序列
public static int binSearch(int[] arr,int number){
int low=0;
int high=arr.length-1;

int mid;
while(low<=high){ //low<=high是一个关键点,不是low<high

//和mid=(low+high)/2的效果一样
//但是mid=(low+high)/2可能会导致内存溢出
//而mid=low+(high-low)/2可以避免这一点
mid=low+(high-low)/2;
if(number<arr[mid]){
high=mid-1;
}else if(number==arr[mid]){
return mid;
}else{
low=mid+1;
}

}

//必须返回负数,表明没有找到
//-(low+1)是一个良好的解决方法
//-1表示没有找到,如果把它插进来,它应该位于该序列的第1个位置
//-2表示没有找到,如果把它插进来,它应该位于该序列的第2个位置
return -(low+1);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: