二分查找的边界条件

Posted natsu07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二分查找的边界条件相关的知识,希望对你有一定的参考价值。

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

以上是关于二分查找的边界条件的主要内容,如果未能解决你的问题,请参考以下文章

递归 —— 二分查找法 —— 归并排序

JS二分查找,二分边界查找算法

二分查找+二分答案(Java)

二分查找法

递归1--二分查找

递归和非递归的二分查找