空间复杂度计算的方法和时间复杂度相似的。时间复杂度是关注于问题规模n。在算法所需的时间花销上分析这个算法的好与坏。
而空间复杂度,是在算法所需的内存占用上分析这个算法的好与坏:
1、一列数据(一维数组):复杂度为1
比如:冒泡排序,各种比较排序
当S(n)=O(1)时,算法原地工作
算法原地工作——算法所需内存时间为常量。
2、有(二维甚至多维)数组:关注于数组的规模,
例如:算法中有定义了数组flag[n] [n],它的空间复杂度就是O(n^2)。
3、递归型算法(和2很类似)
空间复杂度=递归调用的深度
解析:每进行一遍递归,这个算法的规模就会增加(一个指数 ) 。1->n;n->n^2
像考试一般都是考察时间复杂度,还是要以时间复杂度为主。