/**
* @param { array<number> } A 要查找的数组
* @param { number } x 目标值
*/
function handle(A, x) {
// 左边界
let leftIndex = 0
// 右边界
let rightIndex = A.length - 1
// 猜测的位置
let guess
// 给一个结束条件
while ( leftIndex <= rightIndex ) {
// 取中间值
guess = Math.floor((leftIndex+rightIndex)/2)
// 循环不变式
// guess等于leftIndex和rightIndex中间文职
if ( A[ guess ] === x ) return guess
if /* A[ guess ] 大于 x 代表X在左边 */ ( A[ guess ] > x ) {
rightIndex = guess - 1
}/* A[ guess ] 小于 x 代表X在右边 */ else if ( A[ guess ] < x ) {
leftIndex = guess + 1
}
}
return A[ guess ] ? guess : -1
}
const arr = [0,2,4,6,8,95,422,3423, 9999]
console.log(handle(arr, 1)) // -1
console.log(handle(arr, 2)) //
console.log(handle(arr, 9999)) // 8