二分查找法
时间: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
}