黑马程序员技术交流社区
标题:
数组折半查找的问题。。。。
[打印本页]
作者:
孙百鑫
时间:
2013-3-7 20:15
标题:
数组折半查找的问题。。。。
class ArrayTest3 //折半查找
{
public static void main(String[] args)
{
int[] arr=new int[]{1,3,4,6,7,9};
int x=haflSearch(arr,7);
System.out.println("x="+x);
}
public static int haflSearch(int[] arr,int dey)//定义的一个函数用来查找
{
int min,max,mid;
min=0;
max=arr.length-1;
mid=(min+max)/2;
while(dey!=arr[mid])
{
if(dey>arr[mid])
min=mid+1;
else if(dey<arr[mid])
max=mid-1;
if(min>max)
return -1;
mid=(max+min)/2;
}
return min;
}
}
作者:
孙百鑫
时间:
2013-3-7 20:16
为什么我查找7的时候返回的是 3呀 查找9的时候返回的就是5了。。。。。。这是为什么呀???????????????
作者:
BitmapFactory
时间:
2013-3-7 20:28
最后应该是return mid
作者:
孙百鑫
时间:
2013-3-7 20:39
张学林 发表于 2013-3-7 20:28
最后应该是return mid
OK 谢谢啦
作者:
孙百鑫
时间:
2013-3-7 20:44
张学林 发表于 2013-3-7 20:28
最后应该是return mid
OK 谢谢啦
作者:
张卫刚
时间:
2013-3-7 20:45
你是没有了解折半查打,int[] arr=new int[]{1,3,4,6,7,9}; 第一次arr.length/2,arr角标是3,那arr[3]=4;4<7; 第二次6、7、9就是3/2 =1,也就是6,6《7,第三次7,9,2/2=1,也就是7=7,找到了,3次就找到了所以是3,查9就一样
作者:
江华
时间:
2013-3-7 22:23
一个电话聊了一个小时,回帖完了
说明一下我的解释吧:
你的代码的问题出在 wihle循环了
如果wihle循环条件不成立,说明 dey=arr[mid]
这个都等于它了,你返回的是什么?
这种问题,都不应该执行代码就能发现的问题。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2