二分查找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;}
}
数组