如果搜索到的数字存在,则在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