复杂度分析即渐进复杂度分析,反映了算法执行效率与数据规模之间的增长关系。
空间复杂度
常见的就是 O(1), O(n), O(n2)
时间复杂度
时间复杂度量级 | 大O表示法 |
---|---|
常量阶 | O(1) |
对数阶 | O(log n) |
线性阶 | O(n) |
线性对数阶 | O(nlog n) |
幂数阶 | O(n2)、O(n3)、O(nk) |
指数阶 | O(2n) |
阶乘阶 | O(n!) |
以上可分为多项式量级(规模n出现在底数位置)和非多项式量级,其中非多项式量级为 O(2^n), O(n!)
最好、最坏情况时间复杂度
顾名思义,对应的是极端情况下的时间复杂度
平均情况时间复杂度
可称为 加权平均时间复杂度 或 期望时间复杂度
计算方法: ∑ (权重*概率)
权重→这种情况需要的时间
概率→这种情况出现的概率
只有同一块代码在不同的情况下,时间复杂度有量级的差距,我们才会使用这三种复杂度表示法来区分。
均摊时间复杂度
其对应的分析方法为 摊还分析 或称 平摊分析
可平摊分析的情况:
- 大部分情况复杂度低,个别情况复杂度高
- 操作之间存在连贯的时序关系
均摊时间复杂度可以看作是一种特殊的平均时间复杂度