三个算法复杂度:O(1),O(n),O(n^2)。
分析算法的复杂度:
- 用常数1取代运行时间中的所有加法常数
- 在修改后的运行次数函数中,只保留最高阶项
- 如果最高阶项存在且不是1,侧去处与这个项相乘的常数
- 得到的最后结果就是大O阶
T(N)是关于问题规模你的函数
函数调用的时间复杂度分析:
例子 | 时间复杂度 | 对应名词 |
2323345 | O(1) | 常数阶 |
3n+4 | O(n) | 线性阶 |
3n^2+4n+5 | O(n^2) | 平方阶 |
3log(2)n+4 | O(logn) | 对数阶 |
2n+3nlog(2)n+14 | O(nlogn) | nlogn阶 |
n^3+2n^2+4n+6 | O(n^3) | 立方阶 |
2^n | O(2^n) | 指数阶 |
常用的时间复杂度所耗费的时间从小到大依次是:
O(1) < O(logn) < (n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) < O(n^n) ;
空间复杂度:
计算公式:S(n) = O(f(n)) ; n为问题规模,f(n)为语句关于n所占用存储空间的函数。