时间复杂度

别来无恙 提交于 2020-05-05 19:44:45

首先,理解时间复杂度的前提是理解时间频度。


 

时间频度定义:时间频度是由“算法的执行时间和执行次数成正比”来决定的,记做T(n)

时间频度的特点:忽略常数项(2n+30和2n,忽略30)、忽略低次项(2n^3+2n、2n^3+10,忽略2n)、忽略系数(2n^4+5n、2n^4+9n,忽略5和9)。多少次方是关键!

 

时间复杂度:是算法执行语句的次数。

计算时间复杂度有两种方法:

方法一是事后统计:使用某个排序算法结合程序A运行,运行完后查看时间。

事后分析计算排序的时间复杂度具有两个问题:一是 由于不同的电脑运行速度的快慢,在不同的电脑计算排序算法的时间复杂度的结果会被影响;二是 需要实际在运行之后才能知道该算法的时间复杂度结果。

方法二是事前估算:通过分析算法的时间复杂度得知。

计算时间复杂度的方法:①将式子中的常数变为1。②只保留最高阶。③去掉系数。

eg:原式子:2n^3+7n+9——>2n^3+7n+1——>2n^3——>n^3,得到时间复杂度为O(n^3)。

常见的时间复杂度有8种(复杂度越高执行效率越低):

常数阶:O(1)

对数阶O(log2[底数]n[真数])

线性阶:O(n)

线性对数阶:O(nlog2[底数]n[真数])

平方阶:O(n^2)例如嵌套for

立方阶:O(n^3)例如3层嵌套for

K次方:O(n^k)k层嵌套for\递归

指数阶:O(2^n)

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!