在 JavaScript 中实现二分查找,如果存在要搜索的数字,则返回其索引


我们需要编写一个 JavaScript 函数,这个函数将一个排序后的数字数组作为第一个参数,将一个搜索数字作为第二个参数。

如果搜索数字在数组中存在,我们需要在数组中返回其索引,否则我们需要返回 -1。

我们必须充分利用二分查找算法来完成此操作。二分查找算法基本上是一种分治算法,它将数组递归地分成两半,直到它转换为一个单例元素。

二分查找算法在这种情况下对数组进行排序是必要的,因为它让我们很容易决定要分割哪一部分。

示例

const arr = [-3, -1, 4, 7, 9, 11, 14, 22, 26, 28, 36, 45, 67, 78, 88, 99];
const binarySearch = (arr = [], num) => {
   let l = 0;
   let r = arr.length - 1;
   while(l <= r){
      const mid = Math.floor((l + r) / 2); if(num == arr[mid]){
         return mid;
      }
      else if(num < arr[mid]){
         r = mid - 1;
      }
      else{
         l = mid + 1;
      };
   };
   return -1
};
console.log(binarySearch(arr, 22));
console.log(binarySearch(arr, 56));
console.log(binarySearch(arr, 11));

输出

而控制台中的输出将是 −

7
-1
5

更新于: 2020 年 11 月 21 日

572 次查看

开启你的 职业生涯

通过完成课程获得认证

开始
广告