黑马程序员技术交流社区

标题: 二分查找法 [打印本页]

作者: xfbyxq    时间: 2016-7-3 10:41
标题: 二分查找法
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);
}






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