我正在阅读“Cracking the Coding Interview”一书,遇到了一个问题“编写一个程序以按升序对堆栈进行排序。您可以使用额外的堆栈来保存项目,但您不能将元素复制到任何其他数据结构中(如数组)。栈支持以下操作:push、pop、peek、isEmpty。
这本书给出了 O(n^2) 时间复杂度和 O(n) 空间的答案。
但是,我遇到了这个博客,它使用快速排序方法提供了 O(n log n) 时间复杂度的答案。
我想知道的是空间复杂度 O(n^2) 吗?由于对该方法的每次调用都涉及初始化另外两个堆栈,以及另外两个递归调用。
我对空间复杂性仍然有点动摇。我不确定这是否是 O(n^2) 空间,每个递归调用产生的新堆栈小于上一级的堆栈。
如果有人可以在他们的答案背后给出一点解释,那就太好了。