复杂度度量-时间空间复杂度
时间复杂度
- 在评价算法运行效率时,往往忽略处理小规模问题的能力差异,转而关注其在处理大规模问题是的表现,更为关注时间复杂度的总体变化趋势和增长速度的策略与方法,成为渐进分析。
- 在规模为n的所有输入中选择执行时间最长的为T(n),并以其度量算法时间复杂度。T(n)的渐进上界为O(f(n)),即为时间复杂度。
- 对于任意常数c>0,有O(f(n)) = O(cf(n)).即函数各项正的常数项可以忽略。
- 对于任意常数a>b>0,有O(n^a +n^b) = O(n^a).多项式中低次项可以忽略。
- 对算法的复杂度最好的情况做估计,记为Ω(g(n))。
- 对时间复杂度的准确估计记为Θ(h(n))。
空间复杂度
- 算法所需要的存储空间的多少也是衡量其性能的重要指标。包括转储、中转、索引、映射、缓冲等各个方面所消耗的空间。
- 对于时间复杂度的渐进记号也适用于空间复杂度
几种典型的复杂度级别
- 常数O(1)、对数O(log n)、线性O(n)、多项式O(polynomial(n))、指数O(2^n)