理论教育 2019版数据结构高分笔记:考研算法时间复杂度分析技巧

2019版数据结构高分笔记:考研算法时间复杂度分析技巧

时间:2023-11-03 理论教育 版权反馈
【摘要】:求出以后就可以取出f中随n增大而增长最快的项,然后将其系数变为1,作为时间复杂度的度量,记为T=O。例如,f=2n3+4n2+100,则其时间复杂度为T=O=O。实际上计算算法的时间复杂度就是给出相应的数量级,当f与n无关时,时间复杂度T=O;当f与n是线性关系时,T=O;当f与n是二次方关系时,T=O;以此类推。2)根据基本操作执行情况计算出规模n的函数f,并确定时间复杂度为T=O。

2019版数据结构高分笔记:考研算法时间复杂度分析技巧

对于这部分,要牢记一句话:将算法中基本操作的执行次数作为算法时间复杂度的度量。这里所讨论的时间复杂度不是执行完一段程序的总时间,而是其中基本操作的总次数。因此,对一个算法进行时间复杂度分析的要点,无非是明确算法中哪些操作是基本操作,然后计算出基本操作重复执行的次数即可。在考试的算法题目中你总能找到一个n,可以称为问题的规模,如要处理的数组元素的个数为n,而基本操作所执行的次数是n的一个函数f(n)(这里的函数是数学中函数的概念,不是C或C++语言中函数的概念)。对于求其基本操作执行的次数,就是求函数f(n)。求出以后就可以取出f(n)中随n增大而增长最快的项,然后将其系数变为1,作为时间复杂度的度量,记为T(n)=O(f(n)中增长最快的项/此项的系数)。例如,f(n)=2n3+4n2+100,则其时间复杂度为T(n)=O(2n3/2)=O(n3)。实际上计算算法的时间复杂度就是给出相应的数量级,当f(n)与n无关时,时间复杂度T(n)=O(1);当f(n)与n是线性关系时,T(n)=O(n);当f(n)与n是二次方关系时,T(n)=O(n2);以此类推。

说明:考研中常常要比较各种时间复杂度的大小,常用的时间复杂度比较关系为

O(1)≤O(log2(n))≤O(n)≤O(nlog2(n))≤O(n2)≤O(n3)≤≤O(nk)≤O(2n

通过以上分析,总结出计算一个算法时间复杂度的具体步骤如下:(www.daowen.com)

1)确定算法中的基本操作以及问题的规模。

2)根据基本操作执行情况计算出规模n的函数f(n),并确定时间复杂度为T(n)=O(f(n)中增长最快的项/此项的系数)。

注意:有的算法中基本操作的执行次数不仅跟初始输入的数据规模有关,还和数据本身有关。例如,一些排序算法,同样有n个待处理数据,但数据初始有序性不同,则基本操作的执行次数也不同。一般依照使得基本操作执行次数最多的输入来计算时间复杂度,即将最坏的情况作为算法时间复杂度的度量。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈