如何计算一个算法的时间复杂度

如题所述

求解算法的时间复杂度的具体步骤是:  ⑴找出算法中的基本语句;  算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。  ⑵计算基本语句的执行次数的数量级;  只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率。  ⑶用大Ο记号表示算法的时间性能。  将基本语句执行次数的数量级放入大Ο记号中。  如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:  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问题。这只能基本的计算时间复杂度,具体的运行还会与硬件有关。
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-03-30

求解算法的时间复杂度的具体步骤是:

1、找出算法中的基本语句:

算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。

2、计算基本语句的执行次数的数量级

(1)只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂的系数。

(2)这样能够简化算法分析,并且使注意力集中在最重要的一点上:增长率

3、用大Ο记号表示算法的时间性能:

(1)将基本语句执行次数的数量级放入大Ο记号中。

(2) 如果算法中包含嵌套的循环,则基本语句通常是最内层的循环体,如果算法中包含并列的循环,则将并列循环的时间复杂度相加。例如:

for(i=1;i<=n;i++)  x++;  for(i=1;i<=n;i++)
for(j=1;j<=n;j++)  x++; 

(3)第一个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问题。这只能基本的计算时间复杂度,具体的运行还会与硬件有关。

本回答被网友采纳

如何计算一个算法的时间复杂度
求解算法的时间复杂度的具体步骤是:⑴找出算法中的基本语句;算法中执行次数最多的那条语句就是基本语句,通常是最内层循环的循环体。⑵计算基本语句的执行次数的数量级;只需计算基本语句执行次数的数量级,这就意味着只要保证基本语句执行次数的函数中的最高次幂正确即可,可以忽略所有低次幂和最高次幂...

如何计算时间复杂度
计算时间复杂度的方法与步骤:1. 确定基本操作的数量:时间复杂度主要关注算法执行过程中基本操作的数量。基本操作通常指的是算法中最重复执行的操作。2. 分析操作的次数与问题规模的关系:对于不同的问题规模,算法的基本操作次数会如何变化?这是计算时间复杂度的关键。通常,问题规模用n表示,n是输入数...

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

时间复杂度怎么算例题
2.在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出 T(n) 的同数量级(它的同数量级有以下:1,log2n,n,n log2n ,n的平方,n的三次方,2的n次方,n!),找出后,f(n) = 该数量级,若 T(n)\/f(n) 求极限可得到一常数c,则时间复杂度...

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

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

如何计算一个算法的时间复杂度?
第一,你指的时间复杂度是大o表示法的复杂度,也就是一个上界,但不是上确界,所以就算你以一种方式中断排序过程,时间复杂度还是o(n*logn),假设排序过程还能执行的话。第二,达到o(n*logn)的排序算法,以快速排序为例,快速排序不知道你看过没有,它不像选择排序或者冒泡排序那样,每一趟可以...

如何计算时间复杂度
计算时间复杂度时,首要步骤是识别算法的关键操作,然后统计它们在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的幂次最高的项对时间复杂度影响最大,其它常数项和低幂次项可忽略不计。总结:一个算法所耗费...

算法的时间和空间复杂度如何衡量?
1.时间复杂度 算法的时间复杂度是指执行算法所需要的时间。一般来说,计算机算法是问题规模n 的函数f(n),算法的时间复杂度也因此记做。T(n)=Ο(f(n))因此,问题的规模n 越大,算法执行的时间的增长率与f(n) 的增长率正相关,称作渐进时间复杂度 2.空间复杂度 算法的空间复杂度是指算法需要...

相似回答