[十大算法JavaScript的实现] 四、二分查找

目录

一、场景

二、现实意义

三、思想

四、实现

五、结果


一、场景

在一个有序的数列中,选取一个数,判断是否为未知数(必定存在于该序列范围)并可以获取对比关系,快速找到未知数。

二、现实意义

"猜数字"游戏快速缩小数字范围

三、思想

二分法:每次取范围中间值与目标值进行比较,缩小范围到原来的一半。

四、实现

js

 //随机生成一个 0-9999之间的数
 let range = 10000;
 let number = Math.floor(Math.random() * range);
 console.log('number:' + number)
 let findRange = [0, range - 1];
 let middleNumber
 do {
  middleNumber = Math.floor((findRange[1] + findRange[0]) / 2); //取中间值
  console.log('is it ' + middleNumber + '?')
  //比较值并缩小范围
  if (middleNumber < number) {
   findRange = [middleNumber, findRange[1]]
  } else if (middleNumber > number) {
   findRange = [findRange[0], middleNumber]
  }
 } while (middleNumber != number)
 console.log('found it!! it is ' + middleNumber + '!');

五、结果

[十大算法JavaScript的实现] 四、二分查找_第1张图片

你可能感兴趣的:(数据结构与算法)