黑马程序员技术交流社区
标题:
二分法查找数组里一条代码的疑惑
[打印本页]
作者:
Mra
时间:
2015-3-11 22:01
标题:
二分法查找数组里一条代码的疑惑
public class firstday
{
public static void main(String[] args)
{
int [] a = {3,5,7,9,11,23,56,78};
int d = getIndex(a,9);
System.out.print(d);
}
public static int getIndex(int[] x ,int b)
{
int min=0;
int max = x.length-1;
int mid = (x.length-1+0)/2;
while(max>=mid)
{
mid = (max+min)/2; // 这条代码放这 可以正常运行
if(b>x[mid])
min = mid+1;
else if(b<x[mid])
max = mid-1;
else
return mid;
//mid = (max+min)/2; / /这条代码写后 程序会死循环
}
return -1;
复制代码
求解释-- 。。。
作者:
keven1119
时间:
2015-3-11 22:01
这个程序没有什么可以正常用的,但while中的 mid = (max+min)/2;可以不用,因为在循环之前就已经通过 int mid = (x.length-1+0)/2;执行了。而且 if(b>x[mid])
min = mid+1;
else if(b<x[mid])
max = mid-1;
else
作者:
keven1119
时间:
2015-3-11 22:52
上面按错了,补充一下,觉得if语句中min=mid;min=max就好了,还可以少一步运算提高效率。:)
作者:
Mra
时间:
2015-3-11 22:53
谢谢!解决了我的疑问
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2