zoukankan      html  css  js  c++  java
  • Python之时间复杂度

    算法的时间复杂度是一个函数,它定量描述了该算法的运行时间,时间复杂度常用“O”表述,使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大小趋近无穷时的情况
    时间复杂度是用来估计算法运行时间的一个式子(单位),一般来说,时间复杂度高的算法比复杂度低的算法慢
    print('Hello world')  # O(1)
     
     
    # O(1)
    print('Hello World')
    print('Hello Python')
    print('Hello Algorithm')
     
     
    for i in range(n):  # O(n)
        print('Hello world')
     
     
    for i in range(n):  # O(n^2)
        for j in range(n):
            print('Hello world')
     
     
    for i in range(n):  # O(n^2)
        print('Hello World')
        for j in range(n):
            print('Hello World')
    

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

    n = 64
    while n > 1:
        print(n)
        n = 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)

    空间复杂度

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

    a = 'Python'  # 空间复杂度为1
     
     
    # 空间复杂度为1
    a = 'Python'
    b = 'PHP'
    c = 'Java'
     
     
    num = [1, 2, 3, 4, 5]  # 空间复杂度为5
     
     
    num = [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]  # 空间复杂度为5*4
     
     
    num = [[[1, 2], [1, 2]], [[1, 2], [1, 2]] , [[1, 2], [1, 2]]]  # 空间复杂度为3*2*2
    

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

  • 相关阅读:
    LeetCode 453 Minimum Moves to Equal Array Elements
    LeetCode 112 Path Sum
    LeetCode 437 Path Sum III
    LeetCode 263 Ugly Number
    Solutions and Summay for Linked List Naive and Easy Questions
    AWS–Sysops notes
    Linked List
    All About Linked List
    datatable fix error–Invalid JSON response
    [转]反编译c#的相关问题
  • 原文地址:https://www.cnblogs.com/changtao/p/11134908.html
Copyright © 2011-2022 走看看