算法二分法

"""
"""
"""
算法之二分法:
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