python之二分法

一、什么是算法

这里的算法就是基于函数递归的称述拓展

  • 算法就是高效解决问题的方法

  • 二分法就是一种算法

二、二分法应用场景

  • 想要从一个从小到大排列的成千上万个值中找到指定的值

  • 如果使用遍历的话效率太低

  • 那么而二分法就可以极大的缩小问题的规模,以此来提高效率

示例

nums = [-23,-2,4,5,8,90,234,345,467,786,978,8900]  # 从小到大排列
def check(num,l):
    print(l)
    if len(l) == 0:
        print("不存在这个值")
        return
    mid_num = len(l) // 2
    if num > l[mid_num]:   # 说明在中间值得右边
        l = l[mid_num+1:]  # 使用切片将右边的值从新赋值给 l
        check(num,l)       # 递归
    elif num < l[mid_num]: # 说明在中间值得右边
        l = l[:mid_num]    # 使用切片将右边的值从新赋值给 l
        check(num,l)       # 递归
    else:
        print("OK!")
​
check(8900,nums)  # OK!