黑马程序员技术交流社区

标题: 关于while语句条件判断 [打印本页]

作者: 马官聘    时间: 2015-11-13 23:27
标题: 关于while语句条件判断
class  lianxi
{
public static int half(int[] arr,int key)
{
  int min = 0,max=arr.length-1,mid;
   while (min<=max)
   {
   mid=(max+min)/2;
   if(key>arr[mid])
    min=mid+1;
   else if(key<arr[mid])
    max=mid-1;
   else
    return mid;
   }
   return -1;
}
public static void main(String[] args)
{
  int[] arr={2,3,5,8,10,20};
  int index =half(arr,22);
  System.out.println("index="+index);
}
上面那个while判断min不是会一直小于等于max么  为什么要找的数不在数组中会输出-1?

作者: 黑锅    时间: 2015-11-14 12:03
这是个需要有返回值,有形参的方法。方法执行结束后必须有return值。
作者: 黑锅    时间: 2015-11-14 12:04
while语句成立并执行则返回 mid  否则返回-1
作者: 基础班庄艳平    时间: 2015-11-19 21:21
帮你顶下贴
作者: zqiang    时间: 2015-11-19 21:29
return语句在while循环之外吧
作者: 小笨笨天    时间: 2015-11-19 22:36
无语  谁说一直是 小于等于 max的;  这种逻辑题  自己拿笔一步步验算就会一目了然的。注意折半查找 跳出循环的条件
作者: 13533258481    时间: 2015-11-20 00:25
顶下贴
作者: wx_YXxWrUwd    时间: 2015-11-20 00:52
当所有数挨个比对之后 找了遍 找不到一样的 min就会大于max
作者: 小鹿    时间: 2015-11-20 09:09
请问你的注释呢!!   这习惯可不好!
作者: Little_jie    时间: 2015-11-20 10:00
找不到就会执行while循环外的return -1;
作者: qq331335030    时间: 2015-11-20 10:13
哥们,都中级黑马啦
作者: chenxianzai    时间: 2015-11-20 19:38
因为min有一种情况是中间数加1 ,当max和min指向同一个数时,再加1就比max大了,输出返回-1是一个规范




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2