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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 歌诗王道 中级黑马   /  2014-4-13 22:07  /  711 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public static int halfSearch(List<String> list,String key)
  2. {
  3.     int max,min,mid;
  4.     max = list.size()-1;
  5.     min = 0;
  6.     while(min<=max)
  7.     {
  8.         mid = (max+min)>>1;
  9.         String str = list.get(mid);
  10.         int num = str.compareTo(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;
  19. }
复制代码
以上代码是模拟写的一个collections中的binarySearch方,最后返回的是插入位置的负数再减一。二分法在遍历到最后一个元素时不是mid,max,min三个变量指向一个元素吗,返回的插入位置能为max或者mid吗?

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马