标签:外置 大小 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