注意:代码中的left、right、mid都是下标,只有val代表的是值,区别好,才能更好理解代码。
一、代码实现
def fun(li,val):
left = 0 # 下标第一个
right = len(li)-1 # 下标最后一个
while left<=right: # 查找范围,左边永远<=右边的位置
mid = (left+right)//2 # 截半查找,引入第三个下标mid,用来比较val要查找值
if li[mid]==val: # 当列表的下标mid的值等于val的值,就说明找到了
return mid
elif li[mid]>val: # 当mid在val的右边 ,说明mid大于val
right=mid-1 # 再把位置减半,把right移动到mid的前一个
elif li[mid]<val: # 当mid在val的左边 ,说明mid小于val
left=mid+1 # 再把位置减半,把left移动到mid的后一个
else:
print("没有值")
li = [1,2,3,4,5,6,7,8,9]
print(fun(li,4))
二、运行过程
详细图解:
标签:二分,right,下标,val,mid,li,查找,left From: https://blog.csdn.net/CNY8888/article/details/143448803