python之二分法

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!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

贾维斯Echo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值