通过时间复杂度,我们将算法的运行时间理解为输入大小(表示内存中的实例所需的位数)的函数。那么对于这个观察,我们如何定义空间复杂度呢?这显然与实例的大小无关......
空间复杂度可以通过多种方式定义,但通常的定义如下。我们假设输入存储在只读存储器中的某个位置,有一个专用的只写存储器用于存储操作的结果,并且有一些通用的“临时空间”存储器用于进行辅助计算。通常,空间复杂度是存储输出和所有临时空间所需的空间量。例如,二分查找的空间复杂度为 O(1),因为只需要 O(1) 存储空间来存储输入和输出(假设数组索引适合机器字)。
有时,输入和输出空间被组合成单个存储单元并且输入可以被修改。例如,在该模型中,对于合并所需的辅助存储空间,堆排序的空间复杂度为 O(1),而归并排序的空间复杂度为 O(n)。
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)