原理
简单说就是每次二分取中间值,然后将中间值与我们要找的值比较,如果比它大就移动左边界到其右侧,如果比它小就移动右边界到其左侧。直到中间值等于该值或者经过移动直至右边界在左边界左侧为止。
二.具体实现
public int searchInsert(int[] nums, int target) {int left = 0;int right = nums.length - 1;int mid = 0;System.out.println(left + " " + right);while (left <= right) {mid = (left + right) / 2;if (nums[mid] == target) {return mid;} else if (nums[mid] < target) {left = mid + 1;} else if (nums[mid] > target) {right = mid - 1;}}
// right left
// right=mid left right小于target ,target应该在right的右边,target=right+1
// right left=mid left大于target,target应该在left的坐标,target=left
// if (mid == left) {
// return left;
// } else {
// return right+1;
// }return right + 1; // 应该插入的位置
}