标签:外置 大小 def 二分查找 地址 highlight 存储 存在 直接
# arr:数组
# value:要查找的值
def bin_search(arr, value):
# 二分查找指每次查找一半,先找中间值,看看相不相等。
# 如果相等直接返回,不相等比较大小,如果小的话,说明value在右边一半。如果大的话,说明value在左边一半。
# 由于python的list是属于元素外置的方式,list存储的是指针,可以通过索引直接计算出偏移量,从而找到元素的地址。
low = 0 # 查找的初始位置
high = len(arr) - 1 # 查找的结束位置
while low <= high: # 如果初始位置小于等于结束位置,便一直查找。直到不满足条件。
mid = (low + high) // 2 # 找到中间的值
if arr[mid] == value: # 如果相等直接返回
return f"要查找的值为{value},所在位置的索引为{mid}"
elif arr[mid] > value: # 如果arr[mid]>value,说明我们要找的值在左边
high = mid - 1
else:
low = mid + 1 # 否则的话,说明要找的值在右边
else:
return f"{value}不存在"
# 通过函数也看的出来,二分查找需要list有序,我们这里是顺序的,即从小到大
arr = range(1000000)
print(bin_search(arr, 500)) # 要查找的值为500,所在位置的索引为500
arr1 = range(0, 100000, 3)
print(bin_search(arr1, 499)) # 499不存在
标签:外置 大小 def 二分查找 地址 highlight 存储 存在 直接
原文地址:https://www.cnblogs.com/traditional/p/9352278.html