注意:使用本方法的前提数组是有序的
二分法是指在答案具有单调性的前提下,利用二分的思想枚举答案,将求解问题转化为验证结果。
下面是代码实现
这里我们定义数组为a,左边界为left,右边界为right,目标数为target
并且left=0,right=a.length-1(此处为初始值)
public int find(int left, int right, int target,int[] a) { while (left <= right) { int middle = (left + right) / 2; if (target == a[middle]) { return middle; } else if (target > a[middle]) { left = middle + 1;//下一次在右半部分去收索了 } else { right = middle - 1;//下一次在左半部分去收索了 } } return -1;//没有的话就返回-1 }