算法分析与时间复杂度
2017-08-31 18:25
344 查看
算法分析的数学基础
使用以下四个定义:
如果存在正常数c与n0,使得当N≥n0时,T(N) ≤ cf(N),则记为T(N) = O(f(N)). 也就是大O表示法如果存在正常数c与n0,使得当N≥n0时,T(N) ≥ cf(N),则记为T(N) = Ω(f(N)) .也就是大Ω表示法
T(N) = Θ(h(N)) 当且仅当 T(N) = O(h(N)) ,且 T(N) = Ω(h(N)) .
如果 T(N) = O(p(N)) 且T(N) ≠ Θ(p(N)) , 则 T(N) = o(p(N)) .
总结:
通俗的说,这几种表示法可以理解如下:
大O表示法: f(x) = O(g(x)) 表示的含义是f(x)以g(x)为上界小o表示法: f(x) = o(g(x)) 表示的含义是f(x)趋近于g(x)
Ω表示法:f(x) = Ω(g(x)) 表示的含义是f(x)以g(x)为下界
Θ表示法:f(x) = Θ(g(x)) 表示的含义是g(x)是f(x)的确界
算法的常见时间复杂度
由图中的时间复杂度增长趋势可以看出:
最优的算法复杂度为logN
当 N 的值较小时,
NlogN < N, 当 N 的值较大时,
NlogN > N
指数次方与阶乘的复杂度非常高,一般不能使用这些算法,二次方或三次方的时间复杂度在N值较大是也是相当高的,在设计算法的时候必须要注意这一点
相关文章推荐
- 算法的时间和空间复杂度的分析
- 从一个实例(整数幂指数)进行算法时间复杂度的分析
- 重拾算法(一):算法效率分析(空间复杂度和时间复杂度)
- 算法分析:时间复杂度+空间复杂度 O(n)
- 求最大连续子列和的算法和时间复杂度的分析(包含四种不同时间复杂度的算法)
- 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 //求总共有多少总跳法,并分析算法的时间复杂度
- 算法分析(1)-循环的时间复杂度
- 分析算法时间复杂度--主项定理
- 母函数应用的实践(分析算法的时间复杂度)
- 一串首尾相连的珠子(m 个),有N 种颜色(N<=10),设计一个算法,取出其中一段,要求包含所有N 中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 分析算法时间复杂度
- 分析算法时间复杂度的方法
- 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度
- 一串首尾相连的珠子(m个),有N种颜色(N《=10),设计一个算法,取出其中一段,要求包含所有N中颜色,并使长度最短。并分析时间复杂度与空间复杂度。
- 一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 求总共有多少总跳法,并分析算法的时间复杂度
- 算法时间复杂度与空间复杂度分析
- 【算法题】题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。 求总共有多少总跳法,并分析算法的时间复杂度
- 分析算法的时间复杂度
- 算法的时间复杂度和空间复杂度分析
- 【微软100题】一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级,求总共有多少总跳法,并分析算法的时间复杂度