【算法导论学习-008】算法时间复杂度的计算
来源:互联网 发布:导出来的sql带双引号 编辑:程序博客网 时间:2024/04/20 03:02
【算法导论】提供了3种方法来计算算法时间复杂度。
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)
0 0
- 【算法导论学习-008】算法时间复杂度的计算
- 算法导论-计算时间复杂度主定理
- 算法导论-计算时间复杂度主定理
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法的时间复杂度计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法时间复杂度的计算
- 算法的时间复杂度计算
- hdoj.1995 汉诺塔V 20140808
- 实现按钮式单选
- VC2013 ArcGIS Engine 10.0开发环境搭建
- 网络故障排查
- hdu 4930 Fighting the Landlords 多校第六场 斗地主纯模拟
- 【算法导论学习-008】算法时间复杂度的计算
- LinearLayout中layout_gravity控制控件位置
- dump_stack 和 trigger_all_cpu_backtrace
- [Linux]常用命令
- c++ Constructor FAQ 续
- 从HTML代码中提取文字,去掉HTML的标记
- 负载均衡(LB)详解
- 最大流-Edmonds-Karp算法
- 必须使用“控制面板”中的“打开或关闭Windows 功能”安装或配置microsoft.NET framework 2.0 SP2