- 时间复杂度:执行当前程序消耗的度量
- 空间复杂度:当前程序运行占用内存的度量
以上两个维度去衡量一个算法的耗时与占用内存,用big O 来表示
时间复杂度
常数阶复杂度 O(1)
执行的程序中不存在循环,比如
a = 1
b = 2
print(a+b)
在一段代码中执行的次数是常数,其时间复杂度就是O(1)
线性阶复杂度O(n)
在执行的程度中存在单层循环,时间复杂度为循环的次数n,比如
for i in range(0, n):
print(i)
对数阶O(logN)
i = 1
while(i<n):
i = i * 2
每一次执行循环体,i的值就乘以2,循环x次之后,i 大于 n退出循环体,结束运行,也就是说 2 的 x 次方等于 n,那么 x = log2^n,则时间复杂度为O(logN)
线性对数阶O(nlogN)
O(nlogN) = O(N)x O(logN),在上述的循环体中增加时间负责度为O(N)的循环,如
for i in range(0,n):
while(i<n):
i = i * 2