本帖最后由 金鑫613 于 2012-10-8 21:42 编辑
- class Zheban
- {
- public static void main(String[] args)
- {
- int[]arr=new int[]{0,1,2,3,4,5,6,7,8};
- System.out.println(chazhao(arr,0));
- System.out.println(chazhao(arr,4));
- System.out.println(chazhao(arr,8));
- System.out.println(chazhao(arr,10));
- }
- //用折半法查找给定数据在数组中第一次出现的位置
- public static int chazhao(int arr[],int key)
- {
- int min=0;
- int max=arr.length;
- int mid=(min+max)>>1;
- while (max>=min)
- {
- if (key>arr[mid])
- {
- min=mid+1;
- }
- else if (key<arr[mid])
- {
- max=mid-1;
- }
- else
- return mid;
- mid=(min+max)>>1;
- }
- return -1;
- }
- }
复制代码 大家好,我最近刚开始学习java基础,今天看完毕老师关于数组教学的视频后练习编写的数组查询函数,但出现一个问题,当查找的数据大于数组中的最大值时会出现以下这种情况:
定义的升序排列的数组为{0,1,2,3,4,5,6,7,8},查找的数据key我设定的是数组中的最小值0,中间值4,最大值8,以及超出最大值的10。
现在的问题是前三个数据都能正常查找,但在查找超出范围的数据10的时候出现上述问题,检查了两遍没有发现出现这个问题的原因,请大家帮忙查找一下问题的所在。
|