在 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
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

