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

⑴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)) ;
}
老师出的题,实在是不知从何下手!另,请大大们介绍一些关于算法的书,现在在上《数据结构与算法》,老师讲得飞快,一些细节根本没弄懂,在线等!谢谢!
展开
 我来答
tianlidon
2016-01-07 · TA获得超过1219个赞
知道小有建树答主
回答量:676
采纳率:85%
帮助的人:105万
展开全部
求解算法的时间复杂度的具体步骤是:
  ⑴ 找出算法中的基本语句;
  算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。
  ⑵ 计算基本语句的执行次数的数量级;
  只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。
  ⑶ 用大Ο记号表示算法的时间性能。
  将基本语句执行次数的数量级放入大Ο记号中。
  如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:
  for (i=1; i<=n; i++)
  x++;
  for (i=1; i<=n; i++)
  for (j=1; j<=n; j++)
  x++;
  第一个for循环的时间复杂度为Ο(n),第二个for循环的时间复杂度为Ο(n2),则整个算法的时间复杂度为Ο(n+n2)=Ο(n2)。
  常见的算法时间复杂度由小到大依次为:
  Ο(1)<Ο(log2n)<Ο(n)<Ο(nlog2n)<Ο(n2)<Ο(n3)<…<Ο(2n)<Ο(n!)
Ο(1)表示基本语句的执行次数是一个常数,一般来说,只要算法中不存在循环语句,其时间复杂度就是Ο(1)。Ο(log2n)、Ο(n)、Ο(nlog2n)、Ο(n2)和Ο(n3)称为多项式时间,而Ο(2n)和Ο(n!)称为指数时间。计算机科学家普遍认为前者是有效算法,把这类问题称为P类问题,而把后者称为NP问题。
这只能基本的计算时间复杂度,具体的运行还会与硬件有关。
参考博客地址:http://blog.csdn.net/xingqisan/article/details/3206303
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
闳伯吾灿
2020-02-26 · TA获得超过3771个赞
知道大有可为答主
回答量:3171
采纳率:28%
帮助的人:478万
展开全部
关于时间复杂度的计算是按照运算次数来进行的,比如1题:
Sum1(intn)
{intp=1,sum=0,m;//1次
for(m=1;m<=n;m++)//n+1次
{p*=m;//n次
sum+=p;}//n次
return(sum);//1次
}
最后总的次数为
1+(n+1)+n+n+1+1=3n+3
所以时间复杂度f(o)=n;(时间复杂度只管n的最高次方,不管他的系数和表达式中的常量)
其余的一样,不明白的可以来问我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
suiyue_2009
推荐于2018-02-22 · TA获得超过846个赞
知道小有建树答主
回答量:1248
采纳率:0%
帮助的人:877万
展开全部
关于时间复杂度的计算是按照运算次数来进行的,比如1题:
Sum1( int n )
{ int p=1, sum=0, m ; //1次
for (m=1; m<=n; m++) //n+1次
{ p*=m ; //n次
sum+=p ; } //n次
return (sum) ; //1次
}
最后总的次数为
1+(n+1)+n+n+1+1=3n+3
所以时间复杂度f(o)=n;(时间复杂度只管n的最高次方,不管他的系数和表达式中的常量)
其余的一样,不明白的可以来问我
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
局泰烟南风
2020-01-15 · TA获得超过1238个赞
知道小有建树答主
回答量:1458
采纳率:100%
帮助的人:6.8万
展开全部
时间复杂度
是就程序中的不定循环而言的。即随着某个变量的改变,循环体被执行次数的函数。
如单重循环的复杂度为一次,二重循环的时间复杂度为平方。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
迟爵裴珍瑞
2020-08-26 · TA获得超过1174个赞
知道小有建树答主
回答量:1546
采纳率:100%
帮助的人:7.2万
展开全部
算法的时间复杂度主要通过循环来看……
第一个for循环每做1次,第2个就要做m次,所以时间复杂度是:m*m
=
m2
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式