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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xfbyxq 中级黑马   /  2016-7-3 10:41  /  1410 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public static int binarySearchSort(int[] array, int key) {
  /*
   * 需求:在一个有序数组中快速查找指定值
   *
   *
   * 分析:
   * A:定义一个头变量low,尾变量high
   * B:定义一个中间值=(low+high)>>>1;
   * C:定义一个变量获取中间值对应的所引值
   * D:判断该值和要比较值的大小
   * 大于:移动尾变量=中间值-1
   * 小于:移动头变量=中间值+1
   * 等于:返回中间值
   * E:循环B-D,当low>=high时结束循环
   * F:如果执行在这里说明没有找到   返回一个负值表示没有找到  通常返回-(low+1
   *
   */

  int low = 0;
  int high = array.length - 1;
  while (low >= high) {

   int mid = (low + high) >>> 1;
   int midVal = array[mid];
   if (midVal > key) {
    high = mid - 1;

   } else if (midVal < key) {
    low = mid + 1;
   } else {
    return mid;
   }

  }
  return -(low+1);
}

0 个回复

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