zoukankan      html  css  js  c++  java
  • Python(算法)-时间复杂度和空间复杂度

    时间复杂度

    算法的时间复杂度是一个函数,它定量描述了该算法的运行时间,时间复杂度常用“O”表述,使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况

    时间复杂度是用来估计算法运行时间的一个式子(单位),一般来说,时间复杂度高的算法比复杂度低的算法慢

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    print('Hello world')  # O(1)
     
     
    # O(1)
    print('Hello World')
    print('Hello Python')
    print('Hello Algorithm')
     
     
    for in range(n):  # O(n)
        print('Hello world')
     
     
    for in range(n):  # O(n^2)
        for in range(n):
            print('Hello world')
     
     
    for in range(n):  # O(n^2)
        print('Hello World')
        for in range(n):
            print('Hello World')
     
     
    for in range(n):  # O(n^2)
        for in range(i):
            print('Hello World')
     
     
    for in range(n):
        for in range(n):
            for in range(n):
                print('Hello World')  # O(n^3)

     几次循环就是n的几次方的时间复杂度

    1
    2
    3
    4
    = 64
    while n > 1:
        print(n)
        = // 2

     26 = 64,log264 = 6,所以循环减半的时间复杂度为O(log2n),即O(logn)

    如果是循环减半的过程,时间复杂度为O(logn)或O(log2n)

    常见的时间复杂度高低排序:O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n2logn)<O(n3)

    空间复杂度

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    = 'Python'  # 空间复杂度为1
     
     
    # 空间复杂度为1
    = 'Python'
    = 'PHP'
    = 'Java'
     
     
    num = [12345]  # 空间复杂度为5
     
     
    num = [[1234], [1234], [1234], [1234], [1234]]  # 空间复杂度为5*4
     
     
    num = [[[12], [12]], [[12], [12]] , [[12], [12]]]  # 空间复杂度为3*2*2

     定义一个或多个变量,空间复杂度都是为1,列表的空间复杂度为列表的长度

  • 相关阅读:
    noi 2011 noi嘉年华 动态规划
    最小乘积生成树
    noi 2009 二叉查找树 动态规划
    noi 2010 超级钢琴 划分树
    noi 2011 阿狸的打字机 AC自动机
    noi 2009 变换序列 贪心
    poj 3659 Cell Phone Network 动态规划
    noi 2010 航空管制 贪心
    IDEA14下配置SVN
    在SpringMVC框架下建立Web项目时web.xml到底该写些什么呢?
  • 原文地址:https://www.cnblogs.com/palace/p/9598309.html
Copyright © 2011-2022 走看看