【发布时间】:2014-11-04 19:52:29
【问题描述】:
说到大O符号,如果一种算法的时间复杂度是O(N)而另一种是O(2N),那么哪一种更快?
【问题讨论】:
-
没有
O(2N)这样的东西。 -
不,因为常数倍数在大 O 表示法中没有意义。你需要do some more reading。
-
这些 cmets 实际上提供了很多错误信息。对于 f(n) = 2n,O(f(n)) 是很好定义的。写 O(2n) 绝对有效。然而,O(n) 是 canonical 形式,其中 O(n) = O(cn) 对于任何固定的 c > 0。类似地,O(n + log n) 是有效集合,即使虽然 O(n + log n) = O(n)。
-
@ChrisHayes 那么那个的想法需要解决。
-
@ChrisHayes 问题是人们经常认为 O(f(n)) 是一个函数。它不是——它是一组函数。写出类似 4n + 5 = O(n) 的东西是对符号的滥用。正确的表示法是 4n + 5 ϵ O(n)。