时间、空间复杂度分析
所有代码的执行时间 T(n) 与每行代码执行次数 n 成正比。
大 O 表示法
T(n) = O( f(n) )
在这个公式,T(n) 代表代码的执行时间,n 表示数据规模的大写,f(n) 表示每行代码执行的次数总和。
大 O 时间复杂度表示代码执行时间随着数据规模增长的变化趋势,也叫渐进时间复杂度,简称时间复杂度。
时间复杂度分析
- 只关注循环执行次数最多的一段代码
- 总复杂度等于量级最大的那段代码的复杂度
- 嵌套代码复杂度等于嵌套内外代码复杂度的乘积
几种常见的时间复杂度
多项式量级
- 常量阶 O ( 1 )
- 对数阶 O ( log n )
- 线性阶 O ( n )
- 线性对数阶 O ( n * log n )
- 平方阶 O ( n ** 2 )、立方阶 O ( n ** 3 )、K 次方阶 O ( n ** k )
非多项式量级
- 指数阶 O ( 2 ** n )
- 阶乘阶 O ( n! )
空间复杂度
空间复杂度即渐进空间复杂度,表示算法存储空间与数据规模增长之间的关系。