📜  二等分法程序(1)

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

二等分法程序

什么是二等分法

二等分法,也叫二分查找或折半查找,是一种高效的查找算法,适用于有序列表。

该算法的基本思想是:将有序列表分成两部分,取中间值与目标值进行比较,再决定继续查找哪一半,直到找到目标值或查找完整个列表。

二等分法的时间复杂度

由于每次查找会将范围减半,所以二等分法的时间复杂度为O(log n),是一种非常高效的算法。

二等分法程序示例
def binary_search(arr, low, high, x):
    # 如果 low 大于 high,说明查找结束而没有找到
    if high >= low:
 
        mid = (high + low) // 2
        # 如果元素小于中间项,则在左半部分查找
        if arr[mid] > x:
            return binary_search(arr, low, mid - 1, x)
        # 如果元素大于中间项,则在右半部分查找
        elif arr[mid] < x:
            return binary_search(arr, mid + 1, high, x)
        # 如果元素等于中间项,则返回找到的位置
        else:
            return mid
    else:
        # 查找失败
        return -1
代码说明

该示例代码中的二等分法查找函数 binary_search() 接收四个参数:

  • arr : 待查找的有序数组
  • low, high : 查找范围的左右端点下标
  • x : 目标值

通过递归调用 binary_search() 函数实现查找,直到找到目标值或查找完整个列表。如果目标值不在列表中,则返回 -1

总结

二等分法算法是一种高效的查找算法,适用于有序列表。由于它每次都将范围减半,时间复杂度为O(log n),远优于线性查找。二等分法算法应用广泛,如在计算机科学、数学和工程学等领域都有着广泛应用。