算法二分法

"""
"""
"""
算法之二分法:
1: 算法 解决问题的高效方法
 f = [1,3,4,5,6,7,8,9]
 我想取出这个最大的数字9怎么取出是不是可以通过for循环取出来
 如:num = 9
 for i in f:     注释: 通过for循环吧f的值一个一个的给i
      if num==i:    如果当i==9时 那么print 打印findit  表示找到了
          print("find it")

二:二分法 容器类型里面的数字必须有大小顺序
"""
f = [1,3,4,5,6,7,8,9]
num = 10
def get_num(f,num):
    if not f:
        print("你说输入的找不到")
        return
    print(f)
    middle_index = len(f) // 2
    # 判断num跟middle_index对应的数字的大小
    if num > f[middle_index]:
        # 切取列表右半部分
        num_right = f[middle_index + 1:]
        # 再递归调用get_num函数
        get_num(num_right, num)
    elif num < f[middle_index]:
        # 切取列表左半部分
        num_left = f[0:middle_index]
        # 再递归调用get_num函数
        get_num(num_left, num)
    else:
        print('find it', num)

通过切分 吧 列表的值 从中间劈开 然后判断 是否在里面 看是在左边还是在右边 然后重复这样的操作 即可 从而达到最后的目的

 

转载于:https://www.cnblogs.com/yangxinpython/p/11177153.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值