黑马程序员技术交流社区
标题:
关于折半查找的一个问题?
[打印本页]
作者:
林鹏
时间:
2014-7-6 19:50
标题:
关于折半查找的一个问题?
本帖最后由 林鹏 于 2014-7-6 20:30 编辑
大家看看这个折半查找哪里有问题,当查找3时可以正确返回数组下标0,但是输入其它值时一直返回-1
public class HalfSelect {
public static void main(String[] args) {
int[] arr={3,6,9,4,7,1,8};
int index=bisearch(arr, 6);
System.out.println("下标为:"+index);
}
/**
* 折半查找
* @param arr
* @param key
* @return
*/
public static int bisearch(int[] arr, int key) {
int min = 0;
int max = arr.length-1;
int mid = (min + max) / 2;
while (arr[mid]!=key) {
if (key > arr[mid]) {
min = mid + 1;
}
if (key < arr[mid]) {
max = mid - 1;
}
if(min>max)
return -1;
mid = (min + max) / 2;
}
return mid;
}
}
复制代码
作者:
林鹏
时间:
2014-7-6 20:19
找到问题所在了,折半查找只针对有序数组
作者:
dispensable
时间:
2014-7-6 20:22
嗯……是的,必须有序
作者:
张慈瑞
时间:
2014-7-6 20:54
折半查找必须保证数组是有序的,毕老师在java基础的第四天讲过这个问题。
作者:
林鹏
时间:
2014-7-7 09:30
嗯,看到了,开始定义数组的时候没注意
作者:
林鹏
时间:
2014-7-8 12:26
非常感谢
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2