关于前端:Js-二分查找

先玩一个小游戏。事后给定一个小于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

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理