黑马程序员技术交流社区
标题:
请教关于折半查找
[打印本页]
作者:
doyxy
时间:
2013-12-26 22:43
标题:
请教关于折半查找
本帖最后由 doyxy 于 2013-12-26 22:48 编辑
看着毕向东老师的视频,写了一下折半查找函数,看起来代码都一样,为什么我查找出来的结果都是-1呢?谢谢
不好意思,是我自己弄错了,我随便写的一个数组,不是有序数组,不能用折半查找...
//折半查找
//从一个有序数组中查找一个给定的数值key.
//思路:设置三个变量min,mid,max,mid为中间位置,如果key=arr[mid]则输出,
//如果key>arr[mid],则将min改为mid+1,如果key<arr[mid],则将max改成mid-1;
//如果min>max则说明数组中不存在要查找的数值.
class HalfSearch
{
public static void main(String[] args)
{
int[] arr = {2,1,6,4,8};
int index = halfSearch(arr,1);
System.out.println("index="+index);
}
public static int halfSearch(int[] arr,int key)
{
int min=0, max=arr.length-1, mid;
mid = (min+max)/2;
while (key!=arr[mid])
{
if (key>arr[mid])
min = mid+1;
else if (key<arr[mid])
max = mid-1;
mid = (min+max)/2;
}
return mid;
}
}
复制代码
snap027.png
(54.36 KB, 下载次数: 13)
下载附件
2013-12-26 22:43 上传
作者:
doyxy
时间:
2013-12-26 22:47
呃,不好意思,发现原来是因为数组不是有序数组
作者:
75100313
时间:
2013-12-26 22:49
{:soso_e113:}这个。。。。。
作者:
飞一样
时间:
2013-12-26 23:38
先排序,再折半,加油!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2