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

javascriptweb developmentfront end technologyobject oriented programming

我们需要编写一个 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

相关文章