# 二分查找:返回 x 在 arr 中的索引,如果不存在返回 -1
def binarySearch(arr, left, right, x):
if right >= left:
mid = int(left + (right-left)/2)
if arr[mid] == x:
return mid
# 如果元素小于中间位置的元素,只需要再比较左边的元素
elif arr[mid] > x:
return binarySearch(arr, left, mid - 1, x)
# 如果元素大于中间位置的元素,只需要再比较右边的元素
else:
return binarySearch(arr, mid + 1, right, x)
else:
# 不存在
return -1
arr = [2, 5, 7, 8, 40]
x = 8
result = binarySearch(arr, 0, len(arr) - 1, x)
if result != -1:
print("元素在数组中的索引为 %d" % result)
else:
print("元素不在数组中")
二分查找
最新推荐文章于 2024-04-22 07:00:00 发布