黑马程序员技术交流社区
标题:
运行结果有问题
[打印本页]
作者:
杨胜男
时间:
2014-6-8 11:44
标题:
运行结果有问题
/*
数组的查找操作。
折半查找
*/
class ArrayTest4
{
public static void main(String[] args)
{
int[] arr = {2,4,5,7,8,19,32,45};
int index=find(arr, 45);
System.out.print("index="+index);
}
public static int find(int[] arr,int key)
{
int min=0, max=arr.length-1, mid;
while (min<=max)//这里为什么要min<=max,写成min<max,运行结果就是-1?
{
mid=(min+max)/2;
if(key>arr[mid])
min = mid+1;
else if(key<arr[mid])
max =mid-1;
else
return mid;
}
return -1;
}
}
作者:
心灵的微幸福
时间:
2014-6-8 12:08
因为传入的数字正好是该集合的最大值, find方法返回的是mid值,mid等于最大值时,max和min都要等于最大值,
如果不判断min=max 的情况,那么是得不到该数组的最大值的,所以你的结果 会等于-1.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2