【发布时间】:2012-06-06 08:07:37
【问题描述】:
这让我有点困惑。当约束如下时,我解决给定问题的方法应该是什么:
1) 不使用额外空间: 例如:如果我想对给定的数组进行排序,我几乎没有办法做到这一点。 冒泡排序,不断交换(只是循环,没有递归)。我相信据说这是不使用额外空间的。 如果我使用递归对元素进行排序,会发生什么情况。是和“不使用额外空间”一样,还是使用的堆栈计入算法的空间复杂度?
2) 在 O(1) 空间中: O(1) 空间的含义是什么?这是否意味着恒定的空间。现在如果它是常数空间那么请评论以下情况:
a) 如果我在第三个变量的帮助下进行冒泡排序。它不是一个额外的空间,它不会依赖于输入的大小,所以它是恒定的空间。
b) 此外,如果我将计数排序应用于自然数,它实际上并不需要与总数成正比的空间量,我们是否认为它在恒定空间 O(1) 中。
如果有区别,请解释一下。 谢谢
【问题讨论】:
标签: performance algorithm space-complexity