本帖最后由 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;
- }
- }
复制代码
|