增加复杂程度的列表?

可能重复:
Big O的纯英文解释

我正在阅读“算法导论”一书,但不明白这一点。 O(100),O(log(n)),O(n * log(n)),O(n2),O(n3)

好的,谢谢,我甚至知道它是什么,所以我现在要读大O的帖子。 但如果任何人都可以用外行的话来进一步解释这一点,那将是非常值得赞赏的。

谢谢


大O(简化)表示给定算法要完成多久,n是输入量。

例如:

无论输入多少,O(100) - >将完成100个单位。

O(log(n)) - >将完成log(n)

O(n2) - >将完成n ^ 2(n * n)


这是大O符号和算法效率的顺序:

  • O(1) ,而不是O(100) - 恒定时间 - 无论输入如何,算法都在恒定时间内执行

  • O(log(n)) - 对数时间 - 随着输入变大,时间也会变长,但是变小

  • O(n*log(n)) - 线性*对数 - 增加大于线性,但不如下面那样快

  • O(n^2) ,或者一般为O(n^k) ,其中k是常数 - 多项式时间,可能是最可行的算法

  • 有更糟糕的算法,被认为对于非小型输入是不可行的:

  • O(k^n) - 指数

  • O(n!) - 阶乘

  • 遵循Ackerman函数的算法...

  • 这个符号是定向的。 例如, O(n^2)一些算法平均可以执行比O(n*log(n))快的速度 - 请参阅快速排序。

    这个符号也是一个上限,这意味着它描述了一个最坏的情况。

    它可用于空间复杂性或时间复杂性,其中n是所提供输入的大小。

    链接地址: http://www.djcxy.com/p/6765.html

    上一篇: List of increasing order of complexity?

    下一篇: O notation mean?