一、什么是空间复杂度
空间复杂度:Space Complexity
我们前面说过时间复杂度。
时间复杂度是指执行这个算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。
但要解释清除空间复杂度,要先说一下算法存储量。
算法存储量包括:
- 程序本身所占空间
- 输入数据所占空间
- 辅助变量所占空间
输入数据所占空间只取决于问题本身,和算法无关,则只需分析除输入数据和程序本身所占空间之外的辅助变量所占额外空间。
空间复杂度是对一个算法在运行过程中临时占用存储空间(即辅助变量)大小的一个量度,反映的是一个趋势,不是用来计算程序实际占用的空间的,一般也作为问题规模n得函数,以数量级形式给出,记作:
S(n) = O(g(n))
注:g(n)的计算规则和时间复杂度一致
空间复杂度相比时间复杂度分析要少。
算法的空间复杂度并不是计算实际占用的空间,而是计算整个算法的辅助空间单元的个数,与问题的规模没有关系。
二、常见的空间复杂度
空间复杂度比较常用的有:O(1)、O(n)、O(n²)
1.空间复杂度O(1)
如果算法执行所需要的临时空间不随着某个变量n的大小而变化,即此算法空间复杂度为一个常量,可表示为 O(1)
举例: