Arrays中binarySearch

public class Arrays {

  /**
   * 使用二分查找,搜索特定的数组,给定的值
   * @param a 数组
   * @param key 给定的值
   * @return 位置
   */
  public static int binarySearch(int[] a, int key) {
      return binarySearch(a,0,a.length,key);
  }

  /**
   * 二分查找,返回对应位置
   * @param a
   * @param fromIndex
   * @param toIndex
   * @param key
   * @return
   */
  private static int binarySearch(int[] a, int fromIndex, int toIndex, int key) {
    int low = fromIndex;
    int high = toIndex -1;

    while(low <= high) {
      // 中间角标
      int mid = (high + low) >>> 1;
      // 中间值
      int midVal = a[mid];

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

你可能感兴趣的:(java源码)