时间复杂度&空间复杂度
Contents
0.时间复杂度与空间复杂度
我们衡量算法的优劣主要通过两个维度
时间``空间,而这两个维度对应的就是时间复杂度``空间复杂度.
但鱼和熊掌不可兼得,我们只能在这两者间取得一个合适的平衡点
1.时间复杂度
算法所需要的时间工作量
- 标记公式
- T(n) = O(n)
常见的时间复杂度量级
a.常数阶O(1)
|
|
b.线性阶O(n)
|
|
c.对数阶O(logN)
|
|
d.线性对数阶(nlogN)
|
|
e.平方阶(n²)
|
|
如果把一层循环的n改成m,时间复杂度就成了 O(m*n)
|
|
f.立方阶O(n³)、K次方阶O(n^k)
参考的O(n²),O(n³)相当于三层n循环
2.空间复杂度
算法在运算中临时占用的控件的大小
- 标记公式
- S(n) = O(n)
常见的空间复杂度量级
a. O(1)
如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为 O(1)
|
|
b. O(n)
|
|
这段代码中,第一行new了一个数组出来,这个数据占用的大小为n,这段代码的2-6行,虽然有循环,但没有再分配新的空间,因此,这段代码的空间复杂度主要看第一行即可,即 S(n) = O(n)

