算法的时空复杂度概念

时间复杂度

 

 

# 时间复杂度

print("hello world") # T(n) = O(1)


for i in range(n):    
    print("hello world")    # T(n) = O(n)
    
    
for i in range(n):
    for j in range(n):
        print("hello world")   # T(n) = O(n**2)
        
        
for i in range(n):
    for j in range(n):
        for k in range(n):
            print("hello world") # T(n) = O(n**3)


# T(n) = O(log n)
def foo(n):
    while n >1:
        print(n)
        n = n //2
foo(64)

常见的时间复杂度
O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n2logn) < O(n3)

简单判断时间复杂度的方法
1.有循环减半的过程 O(log n)

2.几次循环就是n的几次方 O(n**n)

 

空间复杂度

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

1.程序只有变量
S(n) = O(1)

2.程序需要一个一维数组
S(n) = O(n)

3.程序有一个二维数组
S(n) = O(n2)
一般情况下,会用空间复杂度,换取时间复杂度

  

 

posted @ 2017-09-21 20:26  Adamanter  阅读(401)  评论(0编辑  收藏  举报