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