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')
 
 
for i in range(n):  # O(n^2)
    for j in range(i):
        print('Hello World')
 
 
for i in range(n):
    for j in range(n):
        for k in range(n):
            print('Hello World')  # O(n^3)

 幾次循環就是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

轉自https://www.cnblogs.com/palace/p/9598309.html,如有侵權,請聯繫刪除 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章