共计 470 个字符,预计需要花费 2 分钟才能阅读完成。
先玩一个小游戏。事后给定一个小于 100 的正整数 x,让你猜,猜想过程中给予大小判断的提醒,问你怎么疾速地猜出来?这样猜想最快,先猜 50,如果猜对了,完结;如果猜大了,往小的方向猜,再猜 25;如果猜小了,往大的方向猜,再猜 75;…,每猜想 1 次就去掉一半的数,就这样能够逐渐迫近事后给定的数字。这种思维就是二分法。
经典例题:应用二分法在数组中查找指定值的地位
function findIdx(arr,target){
let left = 0;
let right = arr.length - 1;
let mid;
while(left <= right){mid = Math.ceil((left + right)/2);
if(arr[mid] === target){return mid;}
if(arr[mid] > target){right = mid - 1;}
if(arr[mid] < target){left = mid + 1}
}
return -1;
}
var arr = [1, 2, 3, 4, 5, 6, 7, 9, 10, 34, 35, 66];
console.log(findIdx(arr, 66));//11
正文完