【算法导论学习-008】算法时间复杂度的计算
2014-08-08 11:29
375 查看
【算法导论】提供了3种方法来计算算法时间复杂度。
1、主方法(【算法导论】 P94)
![](http://note.youdao.com/yws/res/3605/CFDBD2599AFB4758A1F663696A30CB29)
2、数学归纳法(mathematical induction,【算法导论】 P83)
如果不满足主方法(The master throrem)的形式结构,可以用归纳法进行证明。
3、递归树方法(【算法导论】 P88)
递归树方法基本满足主方法(The master throrem)的结构形式,只是更形象化的理解。
4、例子
1)【算法导论】P59
递归结构:T(n)=2T(n/2)+n
![](http://note.youdao.com/yws/res/3592/1A601000F0824ACD9CB009DB894310DC)
f(n)=n,满足主方法(The master throrem)的第二种情形,所以T(n)=n*lgn
2)【算法导论】P59
递归结构:T(n)=2T(n/2)+n*lgn
![](http://note.youdao.com/yws/res/3592/1A601000F0824ACD9CB009DB894310DC)
f(n)=n*lgn不是多项式意义上的大于n,所以不满足主方法(The master throrem)的第三种情形。
根据【算法导论】P106 课后题4.6-2的证明题:
![](http://note.youdao.com/yws/res/3608/1DC677CA42E442038166FCCCEE261142)
算法复杂度为:n*(lgn)^2
3)【算法导论】 P87 课后题4.3-1
递归结构:T(n)=T(n-1)+n,假设复杂度为O(n^2)
则数学归纳法证明:T(n)≤c*(n-1)^2
=c*n^2 +(1-2*c)n+c
= O(n^2)
*******************************************************************************************************************
练习题
参考:http://see.xidian.edu.cn/cpp/html/2653.html
以下算法的时间复杂度为(D )
设n是描述问题规模的非负整数,下面程序片段的时间复杂度是(A)
A. O(log2n) B. O(n) C. O(nlog2n) D. O(n2)
1、主方法(【算法导论】 P94)
2、数学归纳法(mathematical induction,【算法导论】 P83)
如果不满足主方法(The master throrem)的形式结构,可以用归纳法进行证明。
3、递归树方法(【算法导论】 P88)
递归树方法基本满足主方法(The master throrem)的结构形式,只是更形象化的理解。
4、例子
1)【算法导论】P59
递归结构:T(n)=2T(n/2)+n
f(n)=n,满足主方法(The master throrem)的第二种情形,所以T(n)=n*lgn
2)【算法导论】P59
递归结构:T(n)=2T(n/2)+n*lgn
f(n)=n*lgn不是多项式意义上的大于n,所以不满足主方法(The master throrem)的第三种情形。
根据【算法导论】P106 课后题4.6-2的证明题:
算法复杂度为:n*(lgn)^2
3)【算法导论】 P87 课后题4.3-1
递归结构:T(n)=T(n-1)+n,假设复杂度为O(n^2)
则数学归纳法证明:T(n)≤c*(n-1)^2
=c*n^2 +(1-2*c)n+c
= O(n^2)
*******************************************************************************************************************
练习题
参考:http://see.xidian.edu.cn/cpp/html/2653.html
以下算法的时间复杂度为(D )
void fun(int n) { int i=l; while(i<=n) i=i*2; }A. O(n) B. O(n2) C. O(nlog2n) D. O(log2n)
设n是描述问题规模的非负整数,下面程序片段的时间复杂度是(A)
x=2; while(x<n/2) x=2*x;
A. O(log2n) B. O(n) C. O(nlog2n) D. O(n2)
相关文章推荐
- 简单算法学习之时间复杂度的计算
- 算法的时间复杂度(计算实例)
- 算法时间复杂度的计算 [整理]
- 算法时间复杂度的计算
- 算法的时间复杂度(计算实例)
- 如何计算一个算法的时间复杂度
- 每天学习一算法系列(3)(设计包含min函数的栈,要求函数min、push以及pop的时间复杂度都是O(1))
- 【算法导论】学习笔记第一章:算法在计算中的作用
- 算法复杂度计算 学习
- 麻省理工算法导论学习笔记(5)----线性时间排序
- 算法的时间复杂度(计算实例)
- 算法的时间复杂度(计算实例)
- 第14话:如何计算算法的时间复杂度
- 如何计算一个算法的时间复杂度
- 算法的时间复杂度(计算实例)
- 算法的时间复杂度(计算实例)
- 计算算法的时间和空间复杂度
- 学习了一下如何计算时间复杂度
- 分治算法复杂度计算----算法导论 主定理应用讲解
- 【算法与数据结构】关于代码运行时间复杂度的计算方法