算法的时间复杂度如何计算?

⑴Sum1(intn){intp=1,sum=0,m;for(m=1;m<=n;m++){p*=m;sum+=p;}return(sum);}⑵Sum2(intn){in...
Sum1( int n )
{ int p=1, sum=0, m ;
for (m=1; m<=n; m++)
{ p*=m ; sum+=p ; }
return (sum) ;
}

Sum2( int n )
{ int sum=0, m, t ;
for (m=1; m<=n; m++)
{ p=1 ;
for (t=1; t<=m; t++) p*=t ;
sum+=p ;
}
return (sum) ;
}
⑶ 递归函数
fact( int n )
{ if (n<=1) return(1) ;
else return( n*fact(n-1)) ;
}
老师出的题,实在是不知从何下手!另,请大大们介绍一些关于算法的书,现在在上《数据结构与算法》,老师讲得飞快,一些细节根本没弄懂,在线等!谢谢!
展开
 我来答
爱上鸟儿
2009-02-27 · TA获得超过1106个赞
知道小有建树答主
回答量:176
采纳率:0%
帮助的人:191万
展开全部
一个算法花费的时间与算法中语句的执行次数成正比例,时间复杂度一般用O(f(x))表示.
f(x)在简单程序中就是看有几个for循环,然后看看再它的判断语句,就是看看它执行了几次,f(x)=“执行的次数”。
像题中的(1)有一个for循环执行次数为n次,所以f(x)=n,时间复杂度就为O(n)
(2)有两个for循环执行次数为n*n,即n的平方,所以f(x)=n的平方,时间复杂度就是O(n的平方)。
(3)是递归,它也执行了n次所以它的时间复杂度就是O(n).
不过要注意时间复杂度的f(x)在有限次时就用具体数值表示,无限次时就用n,n的平方,log以2为底n的对数,其实很简单就是看n的最高次方,看n的最高次方等于几,f(x)就等于几。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
freewzj
2009-02-26 · TA获得超过392个赞
知道小有建树答主
回答量:364
采纳率:100%
帮助的人:337万
展开全部
就是程序执行次数和输入n的函数关系
1.O(n)
2.O(n平方)
3.O(n)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式