您的位置:首页 > 编程语言 > Java开发

java语言实现二分查找数据法

2009-04-19 19:00 501 查看
今天在看《代码之美》这本书的时候看到了一个二分查找数据的方法,自己一时兴起,就照着书上的代码敲了一下,等到运行的时候才发现,书上的代码是错的,于是就自己去琢磨了一下查找的方法,想了一下午,拿了十张纸才计算出这个正确的结果,这里拿来与大家分享了!

这个是我自己写的!

/**
* 二分数组查找法
* @param value 要查找的值
* @return 返回字符串
*/
private String eachWard(int value)
{
String message="";
try{
int inner=0;
int lower=arrays.length-1;
if(arrays.length>0){
while(true){
int num = (inner+lower)/2;
if(arrays[num]==value){message="找到数组元素--->在数组中的下标为:"+num;break;}
if(arrays[num]>value){lower=num-1;}
if(arrays[num]<value){inner=num+1;}
if(lower<inner){message="没有找到该元素!";break;}
}
}else{
message="传入数组不能为空!";
}
}
catch(NullPointerException err){
message="传入数组为空!请传入合法数组!";
}
return message;
}

另外我要声明的是:“二分查找法”查找的只能是已经从小到大排好序的数组,因此在使用此方法时,需要特别的注意!

这个是书上给的代码:

public static int buggyBinarySearch(int[] a, int target) {
int low = 0;
int high = a.length - 1;
while (low <= high) {
int mid = (low + high) / 2;
int midVal = a[mid];
if (midVal < target)

low = mid + 1;
else if (midVal > target)
high = mid - 1;
else
return mid;
}
return -1;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: