【发布时间】:2015-04-08 18:03:42
【问题描述】:
我有一个算法(非常基本),为此我有两个解决方案,其中两个的复杂性是: 方法一:
Space complexity: O(n)
Time Complexity : O(n)
方法二:
Space complexity: O(1)
Time Complexity : O(nlogn)
选择哪种方法,我正在寻找这种情况下的最佳实践。
编辑 1:我的输入是无限大的。
【问题讨论】:
-
取决于你的需要。
-
取决于您的目标系统。如果是 127 字节 RAM 的 8051,您将知道您更喜欢哪个选项 ;)
-
现在你在吹毛求疵 ;) 总是有“被忽略和遗忘”的 c 需要考虑。 “真正的”O 公式有它们。
c + O(c1*N)。这在极端情况下真的很重要...... -
@user2225104,O() 不衡量资源使用,它衡量对资源的需求如何扩展。您之前的评论是完全错误的,因为它声称 O(1) 解决方案 使用 比 O(N) 解决方案更少的内存。
-
只有在一般情况下使用 O 表示法是错误的。通常,任何人都知道他们在谈论缩放。并且任何人都知道,这种缩放有时并不重要。就像对 4 个数字进行简单排序比使用快速排序更快。
标签: performance algorithm time-complexity space-complexity