二分查找法
分半查找
折半查找
[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))