A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王会涛 中级黑马   /  2014-11-11 13:24  /  2915 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class HalfSreach {

public static int halfSearch(int[] arr,int key)
{
  int min,max,mid;
  min=0;
  max=arr.length-1;
  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;
   if(min>max)
    return -1;
   
   
  }
  return mid;
}



public static void main(String[] args) {
  int[] arr={1,6,9,10,61};
  
  System.out.println(halfSearch_1(arr, 6));
  
}
}
如果把else去掉,结果就不对了,为什么?

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 淡定

查看全部评分

12 个回复

倒序浏览
差两分了
回复 使用道具 举报
1、如果见到苹果买6个苹果,如果见到西瓜买1个西瓜。
2、如果见到苹果买6个苹果,否则,如果见到西瓜买1个西瓜。

第一个就是你在街上看到苹果就买6个苹果,见到西瓜就买1个西瓜,两者毫无关系。
第二个就是只有你买不到苹果的情况下见到西瓜才买西瓜,如果买到了苹果,无论是否见到西瓜都不会买西瓜。

这个else就是否则的意思。

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1 赞一个!

查看全部评分

回复 使用道具 举报
mid=(min+max)/2;
if(min>max)
return -1;
好像是
if(min>max)
return -1;
mid=(min+max)/2;

顺序反了额  昨天刚看
回复 使用道具 举报
if    if是如果两个条件满足,就会都执行。任何一个满足都会执行
else  if是当if语句不满足的情况,再满足自身的条件才执行。只能执行一个。
回复 使用道具 举报
cbb 中级黑马 2014-11-12 08:34:51
地板
就是如果(if)这个不行,那么(else)我就要那个
还有就是如果(if)这个不行,我不要了。
回复 使用道具 举报
kang3214 来自手机 中级黑马 2014-11-12 09:50:59
7#
效率差一点点!
回复 使用道具 举报
kakawin 发表于 2014-11-11 23:45
1、如果见到苹果买6个苹果,如果见到西瓜买1个西瓜。
2、如果见到苹果买6个苹果,否则,如果见到西瓜买1个 ...

老有见地了,这表达方式 赞一个
回复 使用道具 举报
爱卿 中级黑马 2014-11-13 09:58:14
9#
kakawin 发表于 2014-11-11 23:45
1、如果见到苹果买6个苹果,如果见到西瓜买1个西瓜。
2、如果见到苹果买6个苹果,否则,如果见到西瓜买1个 ...

看完这个解答 心中豁然开朗!
回复 使用道具 举报
喜欢那个有关苹果的比喻。。
回复 使用道具 举报
3楼解释的 太屌了  我都想给他加分了~~
回复 使用道具 举报
真是3楼出答案
回复 使用道具 举报
楼主 我刚刚试了呀 无论有没有else 结果都是正确的 只是运行时候的效率问题而已 if(条件一) {情况一} else if(条件二){情况二},只是说当条件一满足的情况下不回去运行判断条件二,如果是if(条件一) {情况一}  if(条件二){情况二},只是条件一和条件二没有任何关系都要判断!只是效率问题,没有说去掉else结果就不对这么一说吧!

评分

参与人数 1技术分 +1 收起 理由
杨佳名 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马