zoukankan      html  css  js  c++  java
  • 二分查找的边界条件

    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

  • 相关阅读:
    Know more about RAC statistics and wait event
    再谈指针
    Manageing Undo Data
    SQL基础内容
    JavaScript高级程序设计(3版)笔记分享( ES5特性)
    HTML5布局篇( 总结 )
    温习 SQL 01(Z)
    Makefile
    SQLPLUS工具简介
    链接相关 & 预处理
  • 原文地址:https://www.cnblogs.com/natsu07/p/10351118.html
Copyright © 2011-2022 走看看