二分算法搜索数字
二分搜索算法是一种在有序数组中查找目标值的高效方法。其时间复杂度为 (O(\log n))。下面是用 JavaScript 实现的二分搜索算法:
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) {
left = mid + 1; // 目标值在右半部分
} else {
right = mid - 1; // 目标值在左半部分
}
}
return -1; // 未找到目标值
}
// 示例使用
const array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const target = 7;
const result = binarySearch(array, target);
if (result !== -1) {
console.log(`目标值 ${target} 在数组中的索引为: ${result}`);
} else {
console.log(`目标值 ${target} 不在数组中`);
}
这个函数 binarySearch
接受一个有序数组 arr
和一个目标值 target
,如果找到目标值,返回其在数组中的索引,否则返回 -1。示例代码演示了如何使用这个函数进行二分搜索。
二分算法搜索字母
是的,二分搜索算法不仅可以用于查找数字,还可以用于查找字符或字符串,只要数组是有序的。以下是一个用 JavaScript 实现的在有序字符数组中查找目标字符的二分搜索算法:
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) {
left = mid + 1; // 目标值在右半部分
} else {
right = mid - 1; // 目标值在左半部分
}
}
return -1; // 未找到目标值
}
// 示例使用
const array = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
const target = 'd';
const result = binarySearch(array, target);
if (result !== -1) {
console.log(`目标字符 ${target} 在数组中的索引为: ${result}`);
} else {
console.log(`目标字符 ${target} 不在数组中`);
}
这个函数 binarySearch
处理字符数组和数字数组的方式相同,因为在 JavaScript 中,字符可以通过比较运算符(例如 <
和 ===
)进行比较。确保数组是有序的,这样二分搜索才能正常工作。
总结
二分搜索算法要求数组是有序的。对于字符串数组,这种顺序通常是字母顺序(字典顺序)。这是因为二分搜索依赖于数组的有序性来有效地减少搜索范围。
有序数组的排序可以是数字或字母,甚至是更复杂的对象,只要有一种可以比较元素大小的排序规则。对于字符串,排序通常基于字典顺序,即按字母顺序排列。
标签:二分,arr,数组,搜索算法,js,let,有序 From: https://www.cnblogs.com/jocongmin/p/18300704