二分查找:
每次能够排除掉一半的数据,查找效率非常高。但是局限性比较大,必须是有序序列才可以用二分查找
二分查找--非递归算法(常规循环)
题目:判断n是否在lst中,并输出循环次数
#二分查找--非递归算法(常规循环)
lst=[12,13,24,25,35,46,56,57,67,68,78,79,89,90,123,234,456,789]
n=68
left=0
right=len(lst)-1
count=1 #找了多少次
while left<=right: #边界,当右边比左边还小退出循环
middle=(left+right)//2 #必须整除,索引没有小数
if lst[middle]<n:
left=middle+1
if lst[middle]>n:
right=middle-1
if lst[middle]==n:
print("找到了")
print(count)
break
count=count +1
else:
print("没有这个数")
结果:
找到了
4
二分法--递归循环 递归最大深度:1000
题目:判断n是否在lst中,若果在则返回n的索引
注意:要确定n的位置,在递归调用时必须每次return,因为不能一次实现