在 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