二分查找1
初始算法
二分查找
需求:在有序数组 A 内,查找值 target
- 如果找到返回索引
- 如果找不到返回 -1

public class BinarySearch {public static int binarySearchBasic(int[] a,int target){int i = 0, j = a.length - 1; //设置指针和初值while (i<=j){  //(i,j)范围内有东西int m = (i+j)>>>1;//java中最高位是符号位//右移一位,最高位补零,结果就相当于除以2了if (target < a[m]){  //目标在左边j=m-1;}else if (a[m] < target){  //目标在右边i=m+1;}else {  //找到了return m;}}return -1;}
}
//改动版
public class BinarySearch {public static int binarySearchBasic(int[] a,int target){int i = 0, j = a.length;while (i<j){int m = (i+j)>>>1;if (target < a[m]){  j=m;}else if (a[m] < target){  i=m+1;}else {  return m;}}return -1;}
}数组
