您的位置:首页 > 其它

算法的时间复杂度

2017-04-08 18:43 134 查看
如何推导大O阶:

1、用常数1取代运行时间中的所有加法常数。

2、在修改后的运行次数函数中,只保留最高阶项。

3、如果最高阶项存在且不是1,则去除与这个项相乘的常数。

结果就是大O阶。

常数阶:

eg:

高斯算法:f(n)

int a = 0,b=n;

sum = (a+b)*b/2

syso(sum)

这个时间复杂度是O[1]

因为真正耗费时间的是中间这句算法,剩下两句跟n没有关系

如果变成

int a = 0,b=n;

sum = (0+n)*n/2

sum = (0+n)*n/2

sum = (0+n)*n/2

sum = (0+n)*n/2

sum = (0+n)*n/2

syso(sum)

这个时间复杂度还是O[1]
为什么:因为执行的代码次数,与n的大小并无关系。

线性阶:

对数阶:

平方阶:

常用的时间复杂度耗费时间从小到大依次是:

O[1] < O[logn] < O
< O[nlogn] < O[n^2] < O[n^3] < O[2^n] < O[n!] < O[n^n]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐