当前位置: 代码迷 >> 综合 >> Arrays中binarySearch
  详细解决方案

Arrays中binarySearch

热度:14   发布时间:2023-10-08 21:29:57.0
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);
  }
}