Open TinyScript opened 2 years ago
双指针: let start = 0, end = arr.length 取中数: const mid = Math.floor((end - start) / 2 + start) 根据中数循环调整窗口大小:
let start = 0, end = arr.length
const mid = Math.floor((end - start) / 2 + start)
// 场景一:已知target if(arr[mid] === target) return mid if(arr[mid]) < target) start = mid + 1 if(arr[mid]) > target) end = mid - 1 // 场景二:未知target,getValue返回true代表mid在右边,false代表在左边 if(getValue(mid)) end = mid else start= mid + 1
场景一链接 场景二链接
二分查找关键逻辑:
双指针:
let start = 0, end = arr.length
取中数:const mid = Math.floor((end - start) / 2 + start)
根据中数循环调整窗口大小:场景一链接 场景二链接