您的位置:首页 > 其它

程序的时间复杂度计算

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).

非递归程序比较简单,可以直接累计次数
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: