例如,我对这两个术语有点困惑-合并排序,堆排序和插入排序的辅助空间为O(1),而合并排序,插入排序和堆排序的空间复杂度为O(n)。
所以,如果有人问我合并排序,堆排序或插入排序的空间复杂度是多少,那么我应该告诉他们O(1)或O(n)?
另外,请注意在选择排序的情况下,我读到它的空间复杂度是O(1),这是辅助空间。
那么,使用“就地计算”的算法是否可能,而对于那些算法,我们提到辅助空间吗?
我还知道-
空间复杂度=辅助空间+输入也占用的空间。
请帮助,谢谢!
答案 0 :(得分:1)
查看O(n)时,您需要了解它的含义。这是“在最坏的情况下,它将为N”。我以http://bigocheatsheet.com/作为参考。
当您查看空间复杂性时,他们将想知道在给定的时间点将在内存中保留多少空间。这不包括基本结构。他们将想知道排序以执行相应操作所需的额外空间量。不同之处在于结构需要完全存储在内存中。
关于您的第一个问题,它最多会占用N个空间,但您的操作在内存中保留的总量为O(1)。
当您在处理SORTS时,如上面所列,它们大多只是O(1),因为在交换发生时,它们实际上只需要tmp空间来容纳东西。数据结构本身需要更多的空间,因为它们对于需要进行的任何操作在内存中都有特定的大小。
我使用链接的网站很多。