算法的时间与空间复杂度
算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。为了比较不同算法的优劣,主要还是从算法所占用的「时间」和「空间」两个维度去考量。
-
时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。
-
空间维度:是指执行当前算法需要占用多少内存空间,我们通常用「空间复杂度」来描述。
时间复杂度
对所有算法程序都运行一遍来计算所消耗的时间在实际测试中不太现实,通常使用一种更通用的方法:大O符号表示法,即 T(n) = O(f(n))
其中 f(n) 表示每行代码执行次数之和,而 O 表示正比例关系,这个公式的全称是:算法的渐进时间复杂度。
常见的时间复杂度量级有:
- 常数阶O(1)
- 对数阶O(logN)
- 线性阶O(n)
- 线性对数阶O(nlogN)
- 平方阶O(n²)
- 立方阶O(n³)
- K次方阶O(n^k)
- 指数阶(2^n)