【发布时间】:2015-02-24 03:34:50
【问题描述】:
我对 O(n) 在空间中的含义有很高的理解。这意味着对于输入为 n 的算法,该算法在内存中分配的额外存储空间将与 n 成比例地增加。
因此,如果您有一个算法,将数字 n 作为输入,并创建一个大小为 2n 的数组并将其填充为全 0,则时间复杂度将为 O(n),空间复杂度为 O(n)因为您正在创建一个与输入大小相关的数组(附加存储)。这种理解正确吗?
其次,O(n) 的空间复杂度有多糟糕?流行的排序算法,如快速排序,最坏情况下的空间复杂度为 O(n),所以对于任意长的数据进行排序,O(n) 空间复杂度是否可能产生可怕的影响?如果是这样,是否有任何关于为什么或如何的直觉?
【问题讨论】:
-
我有时想知道学校里的错误信息会给出诸如“O(n) 的空间复杂度有多糟糕”之类的问题。它就是这样,它要么适合,要么你把你的算法扔到窗外去尝试别的东西(或放弃)。作为旁注,您极不可能低于 O(n),因为您可能首先将所有 n 值保存在内存中。
-
这个问题似乎离题了,因为它是关于一般编程概念的——它更适合程序员 SE。
标签: algorithm sorting data-structures time-complexity space-complexity