Python 二分查找算法:快速高效地查找元素
以下是使用二分法查找一个数在指定区间范围的 Python 程序示例:
def binary_search(arr, low, high, x):
'''
:param arr: 有序数组
:param low: 数组起始下标
:param high: 数组结束下标
:param x: 要查找的数
:return: 数在数组中的下标,如果不存在则返回 -1
'''
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
# 示例
arr = [2, 3, 4, 10, 40]
x = 10
result = binary_search(arr, 0, len(arr)-1, x)
if result != -1:
print('元素在数组中的下标为:%d' % result)
else:
print('元素不存在')
在上面的示例中,binary_search 函数使用了递归的方式来实现二分查找算法。它接收一个有序数组、数组的起始下标、结束下标和要查找的数作为参数,返回数在数组中的下标,如果不存在则返回 -1。在函数内部,它首先计算出中间元素的下标,然后检查中间元素是否等于要查找的数,如果是,则返回中间元素的下标;否则,它会递归地在数组的左半部分或右半部分查找,直到找到元素或确定元素不存在。最后,我们使用示例数组 [2, 3, 4, 10, 40] 和要查找的数 10 来测试函数。函数返回的结果为 3,即数 10 在数组中的下标为 3。
原文地址: https://www.cveoy.top/t/topic/lAAt 著作权归作者所有。请勿转载和采集!