Python(二分法查找)

  • 大饼找芝麻(二分法查找)

  •  二分法针对的对象要是有序的队列,通过索引找到你要查找的值
  •  思想:取一个索引开头left,取一个索引末尾(len(队列)-1)right,让你的值跟(left + right)//2(middle)比
  • 如果索引middle值比你查的值大,把middle赋值给right,反之把middle赋值给left;
  • 代码展示:
  • lst = [11,22,33,44,55,66,77,88,99,123,234,345,456,567,678,789,1111]
    n = 456
    left = 0
    right = len(lst) - 1
    count = 1
    while left <= right:
        middle = (left + right) // 2
        if n > lst[middle]:
            left = middle + 1
        elif n < lst[middle]:
            right = middle - 1
        else:
            print('查找次数%s' % count)
            print("存在位置%s" % middle)
            break
        count = count + 1
    else:
        print("不存在")

    用递归方法实现二分法:

  • def binary_search(left, right, n):
        middle = (left + right)//2
        if left > right:
            return -1
        if n > lst[middle]:
            left = middle + 1
        elif n < lst[middle]:
            right = middle - 1
        else:
            return middle
        return binary_search(left, right, n)
    print(binary_search(0, len(lst)-1, 65) )
    

猜你喜欢

转载自blog.csdn.net/hgdl_sanren/article/details/81296944