递归之二分法查找
二分查找法
分半查找
折半查找
[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
原理:
现将整体分为两半
然后取出中间的元素,与你要查找的目标进行比对,如果你要找的比中间值大请走右边
如果你要找的比中间值小请走左边
1.先得到一个中间值,比较是不是你要找的如果是直接返回
2.如果不是 那就把列表拆为两半,进行比较
3.如果你要找的比中间值大找右边
如果你要找的比中间值小找左边
li = [1,2,3,4,5,6,7,8,9,10,11,12,14,15,16,17,18,19,20] def search(li,target): print("start==============") # 如果已经没有内容直接返回false if not li: return False i = len(li) // 2 # 如果当前中间值就是要找的值 直接返回True if li[i] == target: return True # 当要找目标不在整个列表中时,右侧的列表最后会拿着一个值死循环 if len(li) == 1: return False # 将列表切成两半 left = li[:i] right = li[i:] # 判断找左边还是右边 if target > li[i]: return search(right,target) else: return search(left, target) print(search(li,20))