1.前提:有已排序数组A(假设已经做好)
2.定义左边界L、右边界 R,确定搜索范围,循环执行二分查找(3、4两步)2.
3.获取中间索引 M = Floor((L+R) /2)
4.中间索引的值 A[M] 与待搜索的值T进行比较
   A[M] ==T 表示找到,返回中间索引

   A[M]>T,中间值右侧的其它元素都大于 T,无需比较,中间索引左边去找,M-1 设置为右边界,重新查找

   A[M]<T,中间值左侧的其它元素都小于T,无需比较,中间索引右边去找,M +1设置为左边界,重新查找

5.当L>R 时,表示没有找到,应结束循环

 

public static int binarySearch(int[] arr, int target) {

int left = 0, right = arr.length - 1;

while (left <= right) {

int mid = (left + right) / 2;

if (arr[mid] == target) {

return mid;

}else if (arr[mid] < target) {

left = mid + 1;

}else {

right = mid - 1;

  }

} return -1; // 没有找到

}

posted on 2023-02-23 15:03  ithzh  阅读(16)  评论(0)    收藏  举报