zoukankan      html  css  js  c++  java
  • Python9-递归函数-day17

    # 计算方法:人脑复杂,计算机简单
    #查找:找数据
    #排序
    #最短路径
    #我们学习的算法都是过去时
    #要了解基础的算法,才能创造出更好的算法
    #不是所有的事情都能套用现成的方法解决的
    # 有些时候会用到学过的算法只是来解决问题
    #二分查找算法 必须处理有序的列表

    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('get 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  #end len(1)  24
    #     mid_index = (end - start) // 2 + start  #计算中间值  12 +0 =12
    #     if l[mid_index] < aim:     #l[12] < 44    41 <44
    #          find(l,aim,start =mid_index + 1,end=end)  #find(1,44,start=13,end=24)
    #     elif l[mid_index] > aim:
    #         find(l,aim,start =start + 1,end=mid_index-1)
    #     else:
    #         print('got it',mid_index,aim)
    # #第二次
    # def find(l,aim,start=0,end=None):   #1,44,start=13,end=24
    #     end = len(l) if end is None else end  #end=24
    #     mid_index = (end - start) // 2 + start  #计算中间值  24-13 =11 /2 =5 +13=18
    #     if l[mid_index] < aim:     #l[18] < 44   67 <44
    #          find(l,aim,start =mid_index + 1,end=end)
    #     elif l[mid_index] > aim:   67 >44
    #         find(l,aim,start =start + 1,end=mid_index-1)#find(1,44,start=13,end=17)
    #     else:
    #         print('got it',mid_index,aim)
    # #第3次
    # def find(l,aim,start=0,end=None):   #1,44,start=13,end=17
    #     end = len(l) if end is None else end  #end=17
    #     mid_index = (end - start) // 2 + start  #计算中间值  17-13 =4 /2 =2 +13=15
    #     if l[mid_index] < aim:     #l[15] < 44   55 <44
    #          find(l,aim,start =mid_index + 1,end=end)
    #     elif l[mid_index] > aim:   55 >44
    #         find(l,aim,start =start + 1,end=mid_index-1)#find(1,44,start=13,end=14)
    #     else:
    #         print('got it',mid_index,aim)
    # #第4次
    # def find(l,aim,start=0,end=None):   #1,44,start=13,end=14
    #     end = len(l) if end is None else end  #end=14
    #     mid_index = (end - start) // 2 + start  #计算中间值  14-13 =1/2 =0 +13=13
    #     if l[mid_index] < aim:     #l[13] < 44   42 <44
    #          find(l,aim,start =mid_index + 1,end=end)#find(1,44,start=14,end=14)
    #     elif l[mid_index] > aim:   55 >44
    #         find(l,aim,start =start + 1,end=mid_index-1)
    #     else:
    #         print('got it',mid_index,aim)
    #第5次
    def find(l,aim,start=0,end=None):   #1,44,start=14,end=14
        end = len(l) if end is None else end  #end=14
        if start <= end:
            mid_index = (end - start) // 2 + start  #计算中间值  14-14 =0/2 =0 +14=14
            if l[mid_index] < aim:     #l[14] < 44   43<44
                 return find(l,aim,start =mid_index + 1,end=end)#find(1,44,start=15,end=14)
            elif l[mid_index] > aim:
                return find(l,aim,start =start + 1,end=mid_index-1)
            else:
                return mid_index,aim
        else:
                return 'not get it'
    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]
    
    ret = find(l,66)
    print(ret)
  • 相关阅读:
    【MySQL 5.7 Reference Manual】15.4.2 Change Buffer(变更缓冲)
    从MySQL slave system lock延迟说开去
    一文搞懂Raft算法
    Relinking Oracle Home FAQ ( Frequently Asked Questions) (Doc ID 1467060.1)
    Oracle 单实例 Relink Binary Options 说明
    oracle upgrade best pratics
    sysbench安装、使用、结果解读
    Linux 进程管理之四大名捕
    iOS 严重问题解释(crash)
    iOS 图片剪切和压缩的几个方法
  • 原文地址:https://www.cnblogs.com/zhangtengccie/p/10342378.html
Copyright © 2011-2022 走看看