二分查找

前提:给定一个内含n个元素的有序数组A,满足A0<=A1<=A2<=...<=A(n-1),一个待查值target

1.设置 i = 0 , j = n-1
2.如果 i > j ,结束查找,没找到
3.设置 m = floor((i+j)/2),m为中间索引,floor是向下取整
4.如果target < Am 设置 j = m - 1 , 跳到第二步
5.如果Am < target 设置 i = m + 1 ,跳到第二步
6.如果target = Am , 结束查找,找到了

点击查看代码
public static int binarySearchBasic(int[] a, int target){
  int i = 0, j = a.length() - 1;      //设置指针和初值
  while(i<=j){                       //i~j范围内有东西
    int m = (i+j)/2;     //int m = (i+j)>>>1;  可用这个进行替换
    if(target < a[m]){               //目标在左边
        j = m - 1;
    }else if(a[m] < target){         //目标在右边
            i = m + 1;
    }else{ return m ;}               //找到了
  }
  return -1
}
posted on 2024-03-14 20:02  爱在西元前iii  阅读(12)  评论(0)    收藏  举报