时间复杂度和空间复杂度
1.时间复杂度
一个算法与执行代码行数的相关性,且随着某个变量的增长而增长。
例如:
n = int(input())
a = n
这里的代码永远都只是两行代码的时间单位,不会随变量n的增长而增长。所以时间复杂度为O(1)
n = int(input())
a = 1
while a < n :
a += 1
这里的代码的执行行数为2n + 1次,与n的值线性相关,时间复杂度为O(n)
n = int(input())
a = 1
while a < n :
a = a * 2
设执行次数为K,2^k >= n→k>= logn(2为底数),所以时间复杂度为O(logn)
n = int(input())
a = 3
while a < n :
a = a ** 2
同样设执行次数为K,3 ** (2**k)> n→k > log2(lnn/ln3),所以时间复杂度为O(log2(lnn/ln3))
所以时间复杂度O就是代码与变量n的相关函数,执行行数与时间复杂度函数O线性相关。
2.空间复杂度
空间复杂度主要指分配给变量的空间
一般分配空间有两种模式,例如想要知道某个数是不是100以内的质数你可以:
1. 输入你想要查询的值,通过函数运算判断
2. 事先将100以内的所有质数存到一个列表中,查询时直接通过列表查询
这里模式2的空间复杂度就是O(n)。