如何评估算法时间开销?
算法时间复杂度
事前预估算法时间开销T(n)与问题规模n的关系(T表示“time”)
...
大O表示“同阶”,同等数量级。即:当时,二者之比为常数
加法规则 | 乘法规则 |
---|---|
多项相加,只保留最高阶的项,且系数变为1 | 多项相乘,都保留 |
| |
![]() |
| |
| |
结论1:顺序执行的代码只会影响常数项,可以忽略 结论2:只需挑循环中的一个基础操作分析它们的执行次数与n的关系即可 结论3:如果有多层嵌套循环,只需关注最深层循环循环了几次 | |
最坏时间复杂度:最坏情况下算法的时间复杂度 平均时间复杂度:所有输入示例等概率出现的情况下,算法的期待运行时间 最好时间复杂度:最好情况下算法的时间复杂度 | |
小故事:算法的性能问题只有在n很大时才会暴露出来 |