Big o 大O表示法:O((n-1)!)或O(n!)表示T((n-1)!)?

Big o 大O表示法:O((n-1)!)或O(n!)表示T((n-1)!)?,big-o,time-complexity,complexity-theory,Big O,Time Complexity,Complexity Theory,我有一个我分析过的算法,它的时间复杂度是(n-1) 用大O表示法,我会写O((n-1)!还是O(n!)?它应该是O((n-1)!) O(n!)实际上是O(n!)⋅(n-1)!)让我们看看: limn → ∞ n!/(n-1)! = limn → ∞ n = ∞ 画→ ∞ n/(n-1)!=画→ ∞ n=∞ 因此(参见)(n-1)位于o(n!)(little-o)中 因此,如果您的算法复杂性在O((n-1)!,那么它也在O(n!),因此编写O(n!)而不是O((n-1)!),并没有错,但是O((n

我有一个我分析过的算法,它的时间复杂度是
(n-1)

用大O表示法,我会写
O((n-1)!
还是
O(n!)

它应该是
O((n-1)!)

O(n!)
实际上是
O(n!)⋅(n-1)!)

让我们看看:

limn → ∞ n!/(n-1)! = limn → ∞ n = ∞ 画→ ∞ n/(n-1)!=画→ ∞ n=∞ 因此(参见)
(n-1)位于
o(n!)
(little-o)中

因此,如果您的算法复杂性在
O((n-1)!
,那么它也在
O(n!)
,因此编写
O(n!)
而不是
O((n-1)!)
,并没有错,但是
O((n-1)!
是一个更严格的界限,所以您应该使用这个界限


它基本上与写
π相同≤ 22/7
π≤ 4
。两者都是对的,但是
π≤ 22/7
更接近。

所以将
O(n)
所有算法描述为
O(n^2)
“没有错”?@StephenC因为大O是一个上界,所以更大的上界永远不会错。但通常情况下,你是在寻找你能展示的最紧密的界限,所以如果你能展示O(n),你不想说它是在O(n²)。在n的情况下!差别并没有那么大。(n-1)!已经是指数了,所以另一个线性因子也没那么糟糕。我知道有些教授在他们的文章中写得稍微复杂一些,只是因为它更具可读性。