黑马程序员技术交流社区
标题:
请教:折半查找中遇到的问题
[打印本页]
作者:
武超
时间:
2011-11-29 12:59
标题:
请教:折半查找中遇到的问题
本帖最后由 武超 于 2011-11-30 13:36 编辑
class ArrayTest5 //数组,折半查找
{
public static void main(String [] args)
{
int [] arr={1,5,8,13,25,34,46,52};
int index=halfSearch(arr,8);
System.out.print(index);
}public static int halfSearch(int [] arr,int key)
{
int mid;
int min=0;
int 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;
return mid;
}
return -1;
}
}
复制代码
这是在数组中用折半查找的方法查找一个数字,程序代码我检查了好多遍也没找到错误,可是无论是查找什么数,打印出来的都是3.不知道到底是什么错误。
作者:
应国炎
时间:
2011-11-29 13:07
因为你的MID一直是mid=(min+max)>>1,没有变化就return 了
作者:
xiaolij3s
时间:
2011-11-29 15:43
因为你少了个else if.....if else......else 你没判断key = arr[mid] 的情况就返回了 mid
作者:
刘永昌
时间:
2011-11-29 16:24
public static int halfSearch(int [] arr,int key){
int min=0,max=arr.length-1,mid=(min+max)>>1;
while(key!=arr[mid]){
mid=(min+max)>>1;
if(key>arr[mid])
min=mid+1;
else if(key<arr[mid])
max=mid-1;
if(max<min)
return -1;
}
return mid;
}
复制代码
用这个方法试试
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2