📅  最后修改于: 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),远优于线性查找。二等分法算法应用广泛,如在计算机科学、数学和工程学等领域都有着广泛应用。