二分查找的条件:
1.列表是有序的
2.掐头去尾去中间
第一种(最普通的方式):
lst = [1, 4, 5, 7, 12, 15, 16, 23, 35, 56]
n = 5
left = 0
right = len(lst) - 1
middle = 0
while left <= right:#如果,left==right了,证明左右两边重叠了,如果有这个值,就是left==right时,如果没有那么,直接跳出循环走后面的else就可以了
middle = (left + right) // 2
if lst[middle] > n:#如果中间值的值,大于想要查找的值,那么想要的值在左侧,所以把右边的right要向左移动。
#移动到哪呢?中间值,都比n大,所以移动到middle的左边right=middle-1
right = middle - 1
elif lst[middle] < n:#中间值小于n,那么n就在右侧,所以向右移动left,移动到哪呢?中间值都小于n,所以left= middle+1
left = middle + 1
else:
print('找到了')
break
else:
print('没有啊')
第一种(最普通