美文网首页
时间复杂度和空间复杂度

时间复杂度和空间复杂度

作者: 紫色冰雨 | 来源:发表于2018-05-22 17:29 被阅读6次

a) ++x; s=0;

b) for (int i=1; i<=n; i++) { ++x; s+=x; }

c) for (int i=1; i<=n; i++) { for (int j=1; i<=n; j++) { ++x; s+=x; } }

上边这个例子中,a 代码的运行了 1 次,b 代码的运行了 n 次,c 代码运行了 n*n 次。

时间复杂度的表示

算法的时间复杂度的表示方式为:

O(频度)

这种表示方式称为大“O”记法。

注意,是大写的字母O,不是数字0。

对于上边的例子而言,a 的时间复杂度为O(1),b 的时间复杂度为O(n),c 的时间复杂度为为O(n2)。

如果a、b、c组成一段程序,那么算法的时间复杂度为O(n2+n+1)。但这么表示是不对的,还需要对n2+n+1进行简化。

简化的过程总结为3步:

去掉运行时间中的所有加法常数。(例如 n2+n+1,直接变为 n2+n)

只保留最高项。(n2+n 变成 n2)

如果最高项存在但是系数不是1,去掉系数。(n2 系数为 1)

所以,最终a、b和c合并而成的代码的时间复杂度为O(n2)。

常用的时间复杂度的排序

列举了几种常见的算法时间复杂度的比较(又小到大):

O(1)常数阶 < O(logn)对数阶 < O(n)线性阶 < O(n2)平方阶 < O(n3)(立方阶) < O(2n) (指数阶)

相关文章

网友评论

      本文标题:时间复杂度和空间复杂度

      本文链接:https://www.haomeiwen.com/subject/kkspdftx.html