算法的时空复杂度概念
时间复杂度
# 时间复杂度 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) 一般情况下,会用空间复杂度,换取时间复杂度