二分查找算法是一种在有序数组中查找特定元素的搜索算法。它通过将搜索区间分成两半,然后根据目标值与中间值的关系决定搜索区间的下一步范围,从而逐步缩小搜索范围,直到找到目标值或确定不存在。

算法步骤

  1. 确定搜索区间为 lowhigh,初始时 low 为数组的第一个索引,high 为数组的最后一个索引。
  2. 计算中间索引 mid = (low + high) / 2
  3. 比较中间值与目标值:
    • 如果中间值等于目标值,则返回中间索引。
    • 如果中间值大于目标值,则将搜索区间缩小到数组的左半部分,即将 high 设置为 mid - 1
    • 如果中间值小于目标值,则将搜索区间缩小到数组的右半部分,即将 low 设置为 mid + 1
  4. 重复步骤 2 和 3,直到找到目标值或 low 大于 high

代码示例

def binary_search(arr, target):
    low = 0
    high = len(arr) - 1
    while low <= high:
        mid = (low + high) // 2
        if arr[mid] == target:
            return mid
        elif arr[mid] > target:
            high = mid - 1
        else:
            low = mid + 1
    return -1

应用场景

二分查找算法适用于有序数组,在查找效率较高的场景下非常有用。例如,在文件系统中查找文件、在数据库中查找记录等。

更多关于算法的介绍

图片

Binary Search Algorithm