1、时间复杂度分析有下面几个原则:
1)只关注循环执行次数最多的一段代码;
2)加法原则:总复杂度等于量级最大的那段代码的复杂度。用公式表示即为:T1(n) = O(f(m)),T2(n) = O(g(n)),T1(n) + T2(m) = O(max(f(n), g(m)))
;
3)乘法原则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘机。用公式表示即为:T1(n) = O(f(m)),T2(n) = O(g(n)),T1(n) * T2(m) = O(f(n) * g(m))
2、常见的时间复杂度有以下几种:
1)常量阶:O(1)
2)对数阶:O(logn)
3)线性阶:O(n)
4)线性对数阶:O(nlogn)
5)平方阶:O(n ^ 2)
6)指数阶:O(2 ^ n)
7)阶乘阶:O(n!)
其中,1)-5)为多项式量级;6)、7)为非多项式量级,所对应的算法问题被称为非确定多项式问题(NP 问题,Non-Deterministic Polynomial)。