📅  最后修改于: 2023-12-03 15:16:59.773000             🧑  作者: Mango
在 JavaScript 中,二分搜索是一种常用的搜索算法。也称作是二分查找、折半查找、对数查找。它的原理是基于有序数组,将数组划分为左右两个区间,取中间值进行比较后确定在哪个区间继续查找,直至找到目标值或不再存在指定值。它的时间复杂度为 O(log n),效率非常高。
为了能够使用二分搜索,数组必须是有序的。如果数组无序,则查找过程会非常困难,二分搜索也无法实现正确的搜索。所以这是使用二分搜索前必须确保的前置条件。
function binarySearch(arr, target) {
// 左右区间的指针
let left = 0;
let right = arr.length - 1;
while (left <= right) {
// 取中间值
let mid = Math.floor((left + right) / 2);
// 如果中间值正好是目标值,则直接返回下标
if (arr[mid] === target) {
return mid;
} else if (arr[mid] > target) {
// 如果中间值大于目标值,说明目标值可能在左区间,更新右指针
right = mid - 1;
} else {
// 如果中间值小于目标值,说明目标值可能在右区间,更新左指针
left = mid + 1;
}
}
// 没有找到目标值,则返回 -1
return -1;
}
以上代码片段实现了二分搜索的功能。它接受两个参数,一个是要搜索的有序数组,另一个是要搜索的目标值。它返回目标值在数组中的下标,如果不存在,则返回 -1。
二分搜索在实际开发中应用非常广泛。例如:
二分搜索是一种非常基础、高效的算法,应用广泛。在开发中,如果需要搜索有序数组中的指定值,推荐使用二分搜索。