【发布时间】:2018-06-14 12:22:32
【问题描述】:
在特定情况下,我对大 O 表示法和算法的渐近行为感到有些困惑。当我阅读博客http://discrete.gr/complexity/ 很好地描述了这些符号时,我发现了这个说法,不管它是真是假:
一个 O( n ) 算法是 Θ( 1 )
答案说这可能是也可能不是,具体取决于算法。在一般情况下,它是错误的。如果一个算法是 Θ(1),那么它肯定是 O(n)。但如果是 O(n),那么它可能不是 Θ(1)。例如,一个 Θ( n ) 算法是 O( n ) 但不是 Θ( 1 )。
我正在努力理解这个答案。我知道大 O 意味着程序可以渐近地不会更糟。所以我解释了上面的陈述,其中 O( n ) 比 Θ( 1 ) 差并且是正确的。
谁能举例说明?
【问题讨论】:
-
1 ∈ O(1), 1 ∈ O(n), 1 ∈ Θ(1), n ∈ O(n), n ∈ Θ(n), n ∉ Θ(1)。非常非正式(不考虑常数因素),Theta 相等,Big-O 小于或等于 -
-
@Dukeling:很好的评论。请注意,链接副本的答案是错误的。即使它有超过 500 个赞:-/
标签: algorithm time-complexity big-o asymptotic-complexity