二进制搜索算法(Binary Search)是一种在有序数组中查找特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从中间元素开始比较。如果在某一步骤数组为空,则代表找不到。
基础概念:
(low + high) / 2
来找到中间元素的索引。while (low <= high)
,其中 low
是搜索范围的最低索引,high
是最高索引。优势:
类型:
应用场景:
遇到的问题: 如果你在实现二进制搜索算法时遇到了问题,可能是由于以下原因:
while (low < high)
而不是 while (low <= high)
。示例代码(迭代实现):
function binarySearch(arr, target) {
let low = 0;
let high = arr.length - 1;
while (low <= high) {
let mid = Math.floor((low + high) / 2);
if (arr[mid] === target) {
return mid; // 找到目标,返回索引
} else if (arr[mid] < target) {
low = mid + 1; // 目标在右侧子数组
} else {
high = mid - 1; // 目标在左侧子数组
}
}
return -1; // 未找到目标
}
// 使用示例
const sortedArray = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const targetValue = 5;
const index = binarySearch(sortedArray, targetValue);
console.log(`The index of ${targetValue} is ${index}`); // 输出索引
参考链接:
确保你的数组是有序的,并且循环条件设置正确,这样你的二进制搜索算法应该能够正常工作。如果你遇到具体的错误或异常,请提供更多的上下文信息,以便进一步诊断问题。
领取专属 10元无门槛券
手把手带您无忧上云