阅读背景:

二分查找的三种思路

来源:互联网 

二分查找的条件:

 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('没有啊')
第一种(最普通



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: