1.定义
2.思维导图
3.完整代码
def binary_search(li,val):
left = 0
right = len(li)-1
while left <= right:
mid = (left+right)//2 #注意是整除
if li[mid] > val:
right = mid - 1
elif li[mid] < val:
left = mid + 1
else: #mid=left或者mid=right
return mid
#如果不满足 left<=right ,即left>right
else:
return str(val)+"不存在"
li = [0,1,2,3,4,5,6,7,8,9]
print(binary_search(li,3))
4.注意
- 每一轮寻找的mid中间值是整除//
- 注意是len(li)-1, -1在外边
- 当left=right的时候,说明找到了
- 一直是left<right,如果最后出现left>right了,说明没有这个数