二分查找
普通二分查找
low < high
在这里low<=high
退出循环是 low>high , 查找不成功没, low 就是要插入当位置即可
class Solution {
public int searchInsert(int[] nums, int target) {
//二分查找
int n = nums.length;
if(n==0|| nums[0]>=target) return 0;
//初始化操作情况
int low=0 ,high=n-1;
//循环机制,
//当 low<high 是采用判断方法
//当 low <= high 时采用 return low, 可以直接返回该插入当位置
while(low<=high){
int mid = (low+high)/2;
if(nums[mid]==target)
//正常情况下反回值情况
return mid;
else if(nums[mid]>target){
high = mid-1;
}
else
low =mid+1;
}
return low;
// if(nums[low]<target)
// return low+1;
// else
// return low;
//接下来进
//if not successfully find the target in the nums ,then return the max value that still less than target;
}
}
>Binary search整个数组,如果在start <= end时找到了target,返回mid
如果查找失败,即start > end,返回start即可。