zoukankan      html  css  js  c++  java
  • Python学习笔记Day26

    算法

    时间复杂度

    时间复杂度:用来估计算法运行时间的一个式子(单位)

    常见的时间复杂度(按效率排序)
        O(1)<O(logn)<O(n)<O(nlogn)<O(n^2)<O(n^2logn)<O(n^3)
    不常见的时间复杂度(看看就好)
        O(n!), O(2^n), O(n^n) ...
    

    如何一眼判断时间复杂度?

    1. 是否有循环减半的过程
        while n > 1:    
            print(n)
            n = n//2    # O(logn)
    2. 几次循环就是n的几次方的复杂度
    

    空间复杂度

    空间复杂度:用来评估算法内存占用大小的一个式子

    以空间换时间

    列表查找:从列表中查找指定元素
    输入:列表、待查找元素
    输出:元素下标或未查找到元素

    顺序查找 # O(n)
    从列表第一个元素开始,顺序进行搜索,直到找到为止。

    二分查找 # O(log n)
    从有序列表的候选区data[0:n]开始,通过对待查找的值与候选区中间值的比较,可以使候选区减少一半。

    一般递归会比不递归慢,但直接return接递归与不递归一样
    因为递归时需要先进后出,直接return伪递归,不需要出来,结果与while效率相同

    装饰函数直接装饰递归函数时,每次递归都会调用装饰函数,解决方法:另定义一个函数去装饰

  • 相关阅读:
    Redis
    vscode
    uget + aria2
    Nodejs 安装
    NPM
    ?Swift获取手机设备信息
    C语言的32个关键字
    MVC-Html.Label(TextBox、TextArea、RadioButton、CheckBox)
    常用正则表达式
    MVC-Razor引擎布局
  • 原文地址:https://www.cnblogs.com/JeromeLong/p/13252597.html
Copyright © 2011-2022 走看看