程序的时间复杂度计算
2017-07-27 23:06
316 查看
很多时候一眼就能看出程序的时间复杂度,但是遇到复杂的就需要将其过程推导出来,为此总结以下两种形式
一、循环主体中的变量参与循环条件的判断
找出主体语句中与T(n)成 正比的循环变量,带入进行计算,例如:
int i = 1;
while(i <= n)
i = i*2;
其中i*2的次数与T(n)成正比,则2的T(n)次方<= n,则T(n)<=log2n。
二、循环主体中的变量与循环条件无关
可采用数学归纳法或者直接累计循环次数,多层循环时从内到外分析,只关注主体语句执行次数。这种情况分为递归程序和非递归程序
递归程序一般使用公式进行递推,例如:
int fact (int n){
if(n<=1) return 1;
return n*fact(n-1);
}
T(n)=1+T(n-1)=1+1+T(n-2)= ...=n-1+T(1)
则T(N)=O(n).
非递归程序比较简单,可以直接累计次数
一、循环主体中的变量参与循环条件的判断
找出主体语句中与T(n)成 正比的循环变量,带入进行计算,例如:
int i = 1;
while(i <= n)
i = i*2;
其中i*2的次数与T(n)成正比,则2的T(n)次方<= n,则T(n)<=log2n。
二、循环主体中的变量与循环条件无关
可采用数学归纳法或者直接累计循环次数,多层循环时从内到外分析,只关注主体语句执行次数。这种情况分为递归程序和非递归程序
递归程序一般使用公式进行递推,例如:
int fact (int n){
if(n<=1) return 1;
return n*fact(n-1);
}
T(n)=1+T(n-1)=1+1+T(n-2)= ...=n-1+T(1)
则T(N)=O(n).
非递归程序比较简单,可以直接累计次数
相关文章推荐
- 递归程序的时间复杂度计算
- 如何计算程序的时间复杂度
- 程序时间复杂度的计算小结
- 如何计算程序时间复杂度(实战篇)
- 计算时间复杂度 -- 写程序需瞻前顾后
- 如何在 MATLAB 中计算程序运行时间
- java 计算程序执行时间
- 如何正确计算多重循环延时程序的延时时间
- C# 计算程序运行时间
- 【再话Zedboard】如何在SDK中计算某段程序的执行时间
- 计算程序运行时间的方法
- PHP计算程序运行时间的类
- Python计算程序运行时间
- 递归式的时间复杂度的计算
- PHP计算当前程序执行时间
- 如何计算时间复杂度
- 『转』C++中计算程序的运行时间
- 二分查找时间复杂度的计算
- PHP计算程序运行时间的类
- php 计算程序运行时间的类,以及用它和Curl结合Host,实现不用配置Host得到该测试机的访问速度。