Skip to content

二分查找法

时间:O(logN)空间:O(1)

js
function binarySearch(arr, target) {
    let left = 0
    let right = arr.length - 1
    // 当left小于或等于right时持续循环
    while(left <= right) {
        let mid = Math.floor((left + right) / 2)
        if(target < arr[mid]) {
            right = mid + 1 // 如果需要检测的值比中间值小,则证明结果可能在左边,减少right的值
        } else if (target < arr[mid]) {
            left = mid + 1 // 如果需要检测的值比中间值大,则证明结果可能在右边,提升left的值
        } else {
            return mid
        }
    }
    return -1
}