首页 > 技术文章 > 二分法的最简便写法

wuyouwei 2019-05-07 11:32 原文

  二分法查找是非常经典的定位查找算法,下面写一个记录之:

  题目:有一个从小到大的有序数组如{1,2,3,3,5,9,10},有一个数为5,查找这个数在此数组中最邻近的下标。

  思路:可以采用二分法来解此题。

  

 /**
   * 查找区间 first闭区间  last 开区间  如[0,6)
   *
   * @param array  查找数组
   * @param first  查找开始下标闭区间
   * @param last   查找结束下标开区间
   * @param source 需要查找的目标值
   * @return
   */
  static int searchIndexFromArray(int[] array, int first, int last, int source) {
    while (first < last) {
      int middle = first + (last - first) / 2;
      if (array[middle] < source) {
        first = middle + 1;
      } else {
        last = middle;
      }
    }
    return first;
  }
View Code

 

推荐阅读