时间复杂度
T(n) = O(f(n))
T(n)
标识代码执行时间;
n
表示数据规模的大小;
f(n)
表示每行代码执行的次数总和;
O
表示代码的执行时间T(n)与f(n)表达式成正比。
大O主要表示代码执行时间随数据规模增长的变化趋势。
时间复杂度的分析Tips
- 只关注循环执行次数最多的一段代码
- 加法规则:总复杂度等于量级最大的那段代码的复杂度
- 乘法规则:嵌套代码的复杂度等于前套内外代码复杂度的乘积
几种常见的时间复杂度量级(按数量级递增)
- 常量阶 O(1)
- 对数阶 O(logn)
- 线性阶 O(n)
- 线性对数阶 O(nlogn)
- 平方阶 O(n2) 、立方阶O(n3) 、k次方阶O(nk)
- 指数阶 O(2n)
- 阶乘阶 O(n!)
空间复杂度
空间复杂度全称就是渐进空间复杂度(asymptotic space complexity),表示算法的存储空间与数据规模之间的增长关系。