本系列文章是以笔记的方式进行记录,主要内容均来源于王争老师的《数据结构与算法之美》
空间复杂度
什么是空间复杂度
渐进空间复杂度(asymptotic space complexity),表示算法的存储空间与数据规模之间的增长关系。
void demo(int n) {
int i = 0;
int[] a = new int[n];
for (i; i <n; ++i) {
a[i] = i + 1;
}
}
我们可以看到,第 2 行代码中,我们申请了一个空间存储变量 i,但是它是常量阶的,跟数据规模 n 没有关系。第 3 行申请了一个大小为 n 的 int 类型数组,除此之外,剩下的代码都没有占用更多的空间,所以整段代码的空间复杂度就是 T(n) = O(n + 1),又因为常量可以忽略,所以最终空间复杂度为T(n) = O(n)。
我们常见的空间复杂度就是 O(1)、O(n)、O(n2 ),像 O(logn)、O(nlogn) 这样的对数阶复杂度平时都用不到。空间复杂度相对的比较简单。
复杂度的排序
(借用王争老师的一张图,我太懒了不想画,哈哈哈)
本系列其他文章:
《数据结构与算法》目录
《数据结构与算法》一:时间复杂度