黑马程序员技术交流社区
标题:
折半查找不知道那里错了,兄弟们帮忙看看
[打印本页]
作者:
ぺsimon☆
时间:
2013-5-13 19:32
标题:
折半查找不知道那里错了,兄弟们帮忙看看
本帖最后由 ぺsimon☆ 于 2013-5-14 16:22 编辑
/*
这是一个折半查找的程序
*/
class ZheBan
{
public static void main(String[] args)
{
int[] arr={3,22,55,66,33,36,8,90,110};
int key=36;
System.out.println(zheBan(arr,key));
}
public static int zheBan(int[] arr,int key)
{
int min=0,mid;
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;
else
return mid;
}
return -1;
}
}
复制代码
运行结果居然是-1,没有找出错误啦,兄弟们帮帮忙
作者:
任江峰
时间:
2013-5-13 19:46
本帖最后由 任江峰 于 2013-5-13 19:50 编辑
折半查找有一个前提,进行查找的数组必须是有序的。
把你的数组该成下面有序的以后,可以成功折半查找。
int[] arr={3,8,22,33,36,55,66,90,110};
QQ图片20130513194933.jpg
(21.03 KB, 下载次数: 0)
下载附件
2013-5-13 19:50 上传
运行结果
作者:
吴建昆
时间:
2013-5-13 19:50
你给的数组是无序的,排一下序先。
作者:
王靖远
时间:
2013-5-13 20:04
折半查找只能查找有序数组啊。不然怎么保证折半后的值是中间值。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2