• day17 二分查找


    # 什么叫算法
    # 计算的方法
    
    # 99 * 13 = 1287 = 13 * 100 - 13
    # 查找    :   找数据
    # 排序    :
    # 最短路径
    
    # 我们学习的算法,都是过去时
    # 了解基础的算法,才能创造出更好的算法
    # 不是所有的事情都能套用现成的方法解决的
    # 有些时候会用到学过的算法知识来解决新的问题
    
    # 二分查找算法
    #   必须处理有序的列表
    
    # L = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88]
    
    
    # 代码实现
    # def find(L, aim):
    #     mid_index = len(L) // 2
    #     if L[mid_index] < aim:
    #         new_L = L[mid_index + 1:]
    #         find(new_L, aim)
    #     elif L[mid_index] > aim:
    #         new_L = L[:mid_index]
    #         find(new_L, aim)
    #     else:
    #         print('find it',mid_index, L[mid_index])
    #
    #
    # find(L, 66)
    
    L = [2, 3, 5, 10, 15, 16, 18, 22, 26, 30, 32, 35, 41, 42, 43, 55, 56, 66, 67, 69, 72, 76, 82, 83, 88]
    
    
    # def find(l, aim, start=0, end=None):
    #     end = len(l) if end is None else end  # 001
    # 001:写在函数定义时的形参,所能赋的值,只能是在定义函数前已经存在的值。
    # mid_index = (start + end) // 2 # 计算中间值,向下取整 # if start <= end: # if l[mid_index] < aim: # find(l, aim, start=mid_index + 1, end=end) # elif l[mid_index] > aim: # find(l, aim, start=start, end=mid_index - 1) # else: # print('Find it in position', mid_index, aim) # else: # print("Can find it") def find(l, aim, start=0, end=None): end = len(l) if end is None else end # 001 mid_index = (start + end) // 2 # 计算中间值,向下取整 if aim <= l[-1]: if start <= end: if l[mid_index] < aim: return find(l, aim, start=mid_index + 1, end=end) elif l[mid_index] > aim: return find(l, aim, start=start, end=mid_index - 1) else: return mid_index else: return "Can't be find in this list" else: return None  # 用None来修正超出列表范围的数 Aim = input("请输入待查找的数:") #可手动输入待查询的数 Aim = int(Aim) ret = find(L, Aim) if ret is not None: print("The aim's position is", ret) else: print("This number is out of range")
  • 相关阅读:
    Mybatis result相关查询标签使用细则
    9.4 代码缓存 Java性能优化节选
    JarScan
    碎片 Java性能优化节选
    小方法的好处 Java性能优化p203
    HotSpot JIT基础
    JITWatch
    新手电吉他是三单还是单单双?
    JIT编译日志
    修改Oracle数据库的字符集(UTF8→ZHS16GBK)
  • 原文地址:https://www.cnblogs.com/77-is-here/p/10668930.html
Copyright © 2020-2023  润新知