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;
}
这个是我自己写的!
/**
* 二分数组查找法
* @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;
}
相关文章推荐
- 二分查找java语言实现
- 算法入门---java语言实现的二分查找小结
- Java 语言实现折半查找(二分查找)
- Java实现折半查找(二分查找)的递归和非递归算法
- Java实现二分查找
- 算法 -- Java实现二分(折半)查找(图解 + 代码实现)
- Java实现折半查找(二分查找)的递归和非递归算法
- C语言经典算法(九)——递归实现二分查找的两种方法
- Java 实现二分查找
- 数据结构(Java语言)——AVLTree简单实现
- (Java)单链表Java语言链式结构实现(数据结构四)
- 二分查找递归和非递归(java实现)
- 二分查找java实现
- Java实现折半查找(二分查找)的递归和非递归算法
- 数据结构(Java语言)——HashTable(分离链接法)简单实现
- 二分查找的Java实现
- java实现的选择排序、冒泡排序、二分查找
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现【多种语言AES/CBC/PKCS5Padding通用加解密数据】
- [Java Web]ibatis使用queryForMap实现数据查找等操作
- java实现二分查找-两种方式