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


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)) ;
}
老师出的题,实在是不知从何下手!另,请大大们介绍一些关于算法的书,现在在上《数据结构与算法》,老师讲得飞快,一些细节根本没弄懂,在线等!谢谢!

求解算法的时间复杂度的具体步骤是:
  ⑴ 找出算法中的基本语句;
  算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。
  ⑵ 计算基本语句的执行次数的数量级;
  只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。
  ⑶ 用大Ο记号表示算法的时间性能。
  将基本语句执行次数的数量级放入大Ο记号中。
  如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:
  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
温馨提示:内容为网友见解,仅供参考
第1个回答  2020-02-26
关于时间复杂度的计算是按照运算次数来进行的,比如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的最高次方,不管他的系数和表达式中的常量)
其余的一样,不明白的可以来问我
第2个回答  推荐于2018-02-22
关于时间复杂度的计算是按照运算次数来进行的,比如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的最高次方,不管他的系数和表达式中的常量)
其余的一样,不明白的可以来问我本回答被提问者和网友采纳
第3个回答  2020-01-15
时间复杂度
是就程序中的不定循环而言的。即随着某个变量的改变,循环体被执行次数的函数。
如单重循环的复杂度为一次,二重循环的时间复杂度为平方。
第4个回答  2020-08-26
算法的时间复杂度主要通过循环来看……
第一个for循环每做1次,第2个就要做m次,所以时间复杂度是:m*m
=
m2

算法的时间复杂度怎么计算
计算算法的时间复杂度的步骤如下:1、确定基本操作:算法中的基本操作是时间复杂度分析的基础。这些操作可能包括迭代、分支、算术运算等。2、计算基本操作次数:通常,我们将算法中的基本操作次数作为时间复杂度的基础。例如,在循环结构中,循环次数可能就是基本操作次数。3、考虑输入规模的影响:输入规模是...

时间复杂度怎么算
时间复杂度算法记作: T(n)=O(f(n))。算法的时间复杂度,用来度量算法的运行时间,记作:T(n)=O(f(n))。它表示随着输入大小n的增大,算法执行需要的时间的增长速度可以用f(n)来描述。因为f(n)的增长速度是大于或者等于T(n)的,即T(n)=O(f(n))。所以我们可以用f(n...

算法的时间复杂度是指( )。
【解析】算法的时间复杂度是指算法需要消耗的时间资源。一般来说,计算机算法是问题规模n的函数f(n),算法的时间复杂度也因此记做T(n)=O(f(n))因此,问题的规模n越大,算法执行的时间的增长率与f(n)的增长率正相关,称作渐进时间复杂度(Asymptotic Time Cornplexity)。简单来说就是算法在执行过程...

如何计算时间复杂度
1. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))分析:随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。2. 在计算时间复杂度的时候,先找...

算法的时间复杂度是指什么
计算时间复杂度方法 为了计算时间复杂度,我们通常会估计算法的操作单元数量,每个单元运行的时间都是相同的。因此,总运行时间和算法的操作单元数量最多相差一个常量系数。相同大小的不同输入值仍可能造成算法的运行时间不同,因此我们通常使用算法的最坏情况复杂度,记为T(n),定义为任何大小的输入n所需...

如何计算时间复杂度
计算时间复杂度的方法如下:一、确定基本操作的数量 时间复杂度是一个衡量算法执行时间长短的指标,其主要基于算法中基本操作的执行次数。首先,需要确定算法中每个基本操作的数量。基本操作通常指的是算法中重复执行次数最多的操作。二、分析算法的时间复杂度 根据基本操作的数量,可以分析算法的时间复杂度。...

求时间复杂度
1、如何计算算法的时间复杂度 在计算算法时间复杂度时有以下几个简单的程序分析法则:1.对于一些简单的输入输出语句或赋值语句,近似认为需要O(1)时间 2.对于顺序结构,需要依次执行一系列语句所用的时间可采用大O下"求和法则"求和法则:是指若算法的2个部分时间复杂度分别为 T1(n)=O(f(n))和 T2(n...

如何计算时间复杂度
计算时间复杂度时,首要步骤是识别算法的关键操作,然后统计它们在n变化下的执行次数。接着,将这些次数与一些常见的时间复杂度级别(如1, log2n, n, n log2n, n2, n3, 2n, n!)进行比较,找到与T(n)数量级相同的f(n)。如果存在常数c,使得T(n)\/f(n)在n趋于无穷时趋于常数,那么时间...

排序算法的时间复杂度计算
算法的时间复杂度的计算方法为:1、用常数1取代运行时间中的所有加法常数;2、在修改后的运行次数函数中,保留高阶项;3、如最高阶项存在且不是1,则去除与这个项相乘的常数;4、当n增大到一定值,n的幂次最高的项对时间复杂度影响最大,其它常数项和低幂次项可忽略不计。总结:一个算法所耗费...

时间复杂度与空间复杂度o(1)、o(n)、o(logn)、o(nlogn)
时间复杂度和空间复杂度之间没有必然的联系。一个算法可能具有较低的时间复杂度,但空间复杂度较高,反之亦然。在实际应用中,通常需要在时间和空间之间做出权衡,以满足特定需求和资源限制。示例分析 - **斐波那契数列计算**:递归方法的时间复杂度为 O(2^n),空间复杂度为 O(n);而迭代方法的时间...

相似回答