首页 > 其他 > 详细

二分查找的边界条件

时间:2019-02-03 22:26:47      阅读:267      评论:0      收藏:0      [点我收藏+]
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 

end=nums.length

start=-1

end=nums.length-1

start=0  

end=nums.length

start=0  

end=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

二分查找的边界条件

原文:https://www.cnblogs.com/natsu07/p/10351118.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!