我有一个算法,我已经分析过它的时间复杂度为(n-1)!
。
要将其置于big-O表示法中,我会写O((n-1)!)
还是O(n!)
?
答案 0 :(得分:1)
应该是O((n-1)!)
。
O(n!)
实际上是O(n⋅(n-1)!)
答案 1 :(得分:1)
让我们来看看:
limn → ∞ n!/(n-1)! = limn → ∞ n = ∞
因此(请参阅definition)(n-1)!
位于o(n!)
(小-o)。
因此,如果您的算法复杂度在O((n-1)!)
中,那么它也在O(n!)
中,因此编写O(n!)
而不是O((n-1)!)
并没有错,但{{1}是一个更严格的约束,所以你应该使用这个。
与写O((n-1)!)
或π ≤ 22/7
基本相同。两者都是对的,但π ≤ 4
更接近。