• 二分查找的边界条件


    var start = 0;  var end = nums.length - 1;  // 初始条件
        var mid = 0;
        while(start <= end) {   // 循环条件
            mid2 = Math.floor((start + end) / 2);  // 取整方式
            if (target > nums[mid]) {   // 判断条件
                start = mid + 1             // 判断条件
            } else if (target < nums[mid]) {   // 判断条件
                end = mid - 1    // 判断条件
            } else {                // 判断条件
                return mid          //判断条件
            }
        }
        return -1    //收尾
    条件区间 ( )开区间 (]  左开右闭 [) 左闭右开 [] 闭区间
    任意一点 任意一点 任意一点 任意一点 最左的点 最右的点
    初始条件 start

    -1 

    -1

    0  

    0  

    end

    nums.length

    nums.length-1

    nums.length

    nums.length-1

    循环条件

    start < end - 1  

    start < end  

    start < end   

    start <= end   

    start < end  

    start < end  

    最后一次循环

    (a,b,c)

    (a,b]

    [a,b)

    [a]

    [a,b]

    [a,b]

    取整方式 向上/向下 向上

    向下

    向上/向下 向下 向上
    判断条件

    target >

    nums[mid]

    start = mid

    start = mid

    start = mid+1

    start = mid+1

    start = mid+1

    start = mid

    target ===

    nums[mid]

    return mid

    return mid

    return mid

    return mid

    end = mid

    target <

    nums[mid]

    end = mid

    end = mid-1

    end = mid

    end = mid-1

    end = mid-1

    收尾retrun

    -1

    -1 -1 -1

    nums[end] === target ? end : -1

    或 nums[start] === target ? start : -1

  • 相关阅读:
    apache的源代码编译安装
    python学习笔记(五) 200行实现2048小游戏
    python学习笔记(四) 思考和准备
    python学习笔记(三)高级特性
    python自学笔记(二)
    python自学笔记(一)
    redis 配置和使用(C++)
    汇编基础最后一篇--机器语言指令
    汇编语言学习笔记(六)
    网络编程学习方法和图书推荐
  • 原文地址:https://www.cnblogs.com/natsu07/p/10351118.html
Copyright © 2020-2023  润新知