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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


  1. public static int halfSearch2(List<String> list,String key,Comparator<String> cmp)
  2. {
  3. int max,min,mid;
  4. max = list.size()-1;
  5. min = 0;

  6. while(min<=max)
  7. {
  8. mid = (max+min)>>1;// /2;

  9. String str = list.get(mid);

  10. int num = cmp.compare(str,key);
  11. if(num>0)
  12. max = mid -1;
  13. else if(num<0)
  14. min = mid + 1;
  15. else
  16. return mid;
  17. }
  18. return -min-1;
复制代码
代码段如上,这个插入点为什么是min呢,不理解,求解答

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 恒心耐心细心+1

查看全部评分

9 个回复

倒序浏览
那是个 mid 吧。。。middle中间
回复 使用道具 举报
零下五度的水 发表于 2013-11-18 18:30
那是个 mid 吧。。。middle中间

{:soso_e136:}问题是真的是毕老大的代码,也没细说,纠结
回复 使用道具 举报
是这样的啊···哪里有错了···
回复 使用道具 举报
何超 发表于 2013-11-18 21:53
是这样的啊···哪里有错了···

不是错,而是不理解为什么是min
回复 使用道具 举报
嗯我想是这样的return -min-1,意思就是返回-1就是程序出错了。
回复 使用道具 举报
return -min-1;分析开始min=0,由于return -min-1;在while()循环的外面,可以想到当while结束时,min=max了,-min-1就是一个负数,貌似就是表示程序结束吧
回复 使用道具 举报
FFF 金牌黑马 2013-11-19 00:23:15
8#
如果问题已经解决,请及时修改主题为“提问结束”。
修改主题的方法链接
http://bbs.itheima.com/thread-89313-1-1.html
如果没有解决,可能你的问题问得不够清楚。可以重新发问的哦~
回复 使用道具 举报
hurryup 发表于 2013-11-18 22:14
嗯我想是这样的return -min-1,意思就是返回-1就是程序出错了。

retrun一个负数代表被比较的数大于比较数,返回(-插入点-1)
我问的是当key不是str中的元素是,插入位置为什么是min。
回复 使用道具 举报
侠客梦的懒猫 发表于 2013-11-18 22:39
return -min-1;分析开始min=0,由于return -min-1;在while()循环的外面,可以想到当while结束时,min=max ...

retrun一个负数代表被比较的数大于比较数,返回(-插入点-1)
我问的是当key不是str中的元素是,插入位置为什么是min。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马