分析

二分查找的前提:

  • 数组有序
  • 数组无重复

二分查找的代码要点:

  • while循环时的区间要保持一致! 比如target是在左闭右闭区间就要一直坚持这个原则、

    最基础的二分写法

    严格限制序列单调递增/无重复,且只要求返回下标

    1. var search = function(nums, target) {
    2. let left =0
    3. let right =nums.length -1
    4. // 左闭右闭的区间
    5. while(left<=right){
    6. // 左距离+区间长度的一半,向下取整
    7. let mid =left +Math.floor((right -left)/2)
    8. if(nums[mid]>target){
    9. right =mid-1
    10. }else if(nums[mid]<target){
    11. left =mid+1
    12. }else{
    13. return mid
    14. }
    15. }
    16. return -1
    17. };

    二分的各种变型

    1654153825(1).png