增加复杂程度的列表?
可能重复:
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
是所提供输入的大小。
上一篇: List of increasing order of complexity?
下一篇: O notation mean?