📌  相关文章
📜  binarySearch - Javascript (1)

📅  最后修改于: 2023-12-03 15:29:37.230000             🧑  作者: Mango

二分查找(Binary Search)- Javascript

二分查找,又称折半查找,是一种高效的查找算法,它只适用于有序的数组。

该算法将数组分成两半,然后查找目标元素的值与中间元素的值进行比较。如果目标值等于中间元素的值,则查找成功。否则,如果目标值小于中间元素的值,则在左半部分继续查找;如果目标值大于中间元素的值,则在右半部分继续查找。如此递归处理,直到找到目标值或把整个数组查找完。

实现方法

下面是一份二分查找的Javascript实现代码,它接受一个有序数组arr和目标值target,返回目标值在数组中的索引,如果不存在则返回-1。

function binarySearch(arr, target) {
  let left = 0;
  let right = arr.length - 1;
  
  while (left <= right) {
    let middle = Math.floor((left + right) / 2);
    
    if (arr[middle] === target) {
      return middle;
    } else if (arr[middle] < target) {
      left = middle + 1;
    } else {
      right = middle - 1;
    }
  }
  
  return -1;
}

本算法时间复杂度为O(log n),空间复杂度为O(1)。

示例

以下代码演示了如何使用上述实现函数来查找有序数组中的目标值:

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
let target = 5;

let index = binarySearch(arr, target);
console.log(index); // 4

在上述示例中,有序数组arr包含数字1到9,目标值为5,将目标值传递给binarySearch函数后,它返回目标值所在数组的索引4。

总结

二分查找适用于有序数组中的元素查找,它比线性查找更快,时间复杂度为O(log n),但需要先对数组进行排序。此外,当数组长度很大时,二分查找的时间性能会更加明显。