通过时间复杂度,我们将算法的运行时间理解为输入大小(表示存储器中实例所需的位数)的函数。那么我们如何定义空间复杂性呢?它显然无法与实例的大小相关...
答案 0 :(得分:5)
空间复杂性可以通过多种方式定义,但通常的定义如下。我们假设输入存储在某处的只读存储器中,存在用于存储操作结果的专用只写存储器,并且存在用于进行辅助计算的一些通用“暂存空间”存储器。通常,空间复杂度是存储输出和所有临时空间所需的空间量。例如,二进制搜索具有空间复杂度O(1),因为只需要O(1)存储空间来存储输入和输出(假设数组索引适合机器字)。
有时,输入和输出空间被组合到一个存储单元中,并且可以修改输入。例如,在此模型中,heapsort具有空间复杂度O(1),而mergesort具有合并所需的辅助存储空间的空间复杂度O(n)。
希望这有帮助!