1.二分查找
Posted traditional
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了1.二分查找相关的知识,希望对你有一定的参考价值。
# 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不存在
以上是关于1.二分查找的主要内容,如果未能解决你的问题,请参考以下文章