二分查找的邊界條件

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 spa

-1code

0  blog

0  get

end

nums.lengthtable

nums.length-1class

nums.length循環

nums.length-1tab

循環條件

start < end - 1  di

start < end  while

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

相關文章
相關標籤/搜索