黑马程序员技术交流社区
标题:
java基础 折半查询函数 查询错误 请指正
[打印本页]
作者:
张帅
时间:
2011-12-16 20:41
标题:
java基础 折半查询函数 查询错误 请指正
本帖最后由 张帅 于 2011-12-16 22:21 编辑
public static int halfSearch(int[] arr,int key){
int min,max,mid;
min = 0;
max = arr.length-1;
while(min<=max){
mid = (min+max)>>1;
if(key>arr[mid]){
min = mid +1;
}else if(key<arr[mid]){
max = mid - 1;
}else{
return mid;
}
}
return -1;
}
作者:
刘基军
时间:
2011-12-16 21:02
这有什么问题吗?
作者:
余松霖
时间:
2011-12-16 21:03
没看出来!!
作者:
张帅
时间:
2011-12-16 21:09
我调试了下,发现永远都返回 -1;
作者:
余松霖
时间:
2011-12-16 21:12
标题:
你
本帖最后由 余松霖 于 2011-12-16 21:29 编辑
张帅 发表于 2011-12-16 21:09
我调试了下,发现永远都返回 -1;
你数组是什么 你要知道key值如果不在数组中 返回的都是-1
作者:
刘基军
时间:
2011-12-16 21:12
张帅 发表于 2011-12-16 21:09
我调试了下,发现永远都返回 -1;
正常的,
测试代码:
class Test
{
public static void main(String[] args)
{
int [] a ={1,2,3,5,7,8,9};
System.out.println(halfSearch(a,8));
System.out.println(halfSearch(a,6));
}
public static int halfSearch(int[] arr,int key)
{
int min,max,mid;
min = 0;
max = arr.length-1;
while(min<=max){
mid = (min+max)>>1;
if(key>arr[mid]){
min = mid +1;
}else if(key<arr[mid]){
max = mid - 1;
}else{
return mid;
}
}
return -1;
}
}
复制代码
测试结果:
5
-1
复制代码
作者:
张帅
时间:
2011-12-16 22:18
monghuan 发表于 2011-12-16 21:12
正常的,
测试代码:测试结果:
我勒个晕,难道我系统出毛病了,我再排查下,谢谢了
作者:
北极£莜蓝
时间:
2014-6-5 18:17
没问题呀,
作者:
啦啦啦啦啦啦啦
时间:
2015-12-4 16:14
这里的min是应该从0开始还是应该从arr[0]开始???
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2