Algorithm 堆排序的辅助空间和空间复杂度之间的差异?

Algorithm 堆排序的辅助空间和空间复杂度之间的差异?,algorithm,sorting,heapsort,space-complexity,Algorithm,Sorting,Heapsort,Space Complexity,堆排序的辅助空间和空间复杂度之间的差异 我的尝试: 如前所述: 如果我们想在空间的基础上比较标准排序算法,那么辅助空间将是比空间复杂度更好的标准。合并排序使用O(n)辅助空间,插入排序和堆排序使用O(1)辅助空间。所有这些排序算法的空间复杂度都是O(n) 我在谷歌上搜索了堆排序的空间复杂度,发现空间复杂度是O(1) 我的问题是: 这个解释正确吗?辅助空间和空间复杂性的区别是什么 辅助存储器应适用于所有不用于存储原始输入的存储器 堆排序输入是一个无序元素的数组,它通过将它们重新排列到位来工作,这意

堆排序的辅助空间和空间复杂度之间的差异

我的尝试: 如前所述:

如果我们想在空间的基础上比较标准排序算法,那么辅助空间将是比空间复杂度更好的标准。合并排序使用O(n)辅助空间,插入排序和堆排序使用O(1)辅助空间。所有这些排序算法的空间复杂度都是O(n)

我在谷歌上搜索了堆排序的空间复杂度,发现空间复杂度是O(1)

我的问题是:

这个解释正确吗?辅助空间和空间复杂性的区别是什么

辅助存储器应适用于所有不用于存储原始输入的存储器

堆排序输入是一个无序元素的数组,它通过将它们重新排列到位来工作,这意味着不使用(或不依赖于输入数组大小的常量)辅助空间(堆是使用输入数组构建的)

谈到空间复杂度,您还应该考虑输入和辅助空间使用的空间,因此从这个意义上讲,堆排序的空间复杂度为
O(n)+O(1)
n
用于输入,
1
作为辅助空间)。 公平地说,如果你想要的话,你也可以考虑栈上使用的空间(堆堆的递归实现使用那个空间,虽然它应该只有O(Logn))。p>
顺便说一下,合并排序的辅助空间也可以是
O(1)
,因为存在一个版本的合并排序,它将数组排序到位()

感谢您的精彩解释。空间复杂性是否应包括输入是100%基于意见的(和)。99.9%提到的空间复杂度都不包括输入,大概是因为在算法开始之前就已经分配了空间,这没有多大意义。显然,如果在其中包含输入的
n
元素,那么说算法使用
O(1)
空间是毫无意义的(因为
n
元素不是
O(1)
)。