O(1) — 常量空间复杂度

不管输入数据的规模如何,算法所需的内存空间大小是固定的。
数组中查找最大元素。这个操作只需要一个变量来保存当前找到的最大值,因此空间复杂度是O(1)。

O(log n) — 对数空间复杂度

需要的空间随输入数据的规模的对数增长。
递归实现的二分查找。在每次递归调用中,问题的规模都减半,因此最大的调用深度是log n,相应地,栈的空间也是O(log n)。

O(n) — 线性空间复杂度

需要的空间与输入数据的规模成正比。
动态数组(如C++中的 std::vector)。动态数组可能需要根据输入数据的数量动态调整大小,其空间复杂度通常是O(n)。

O(n log n) — 线性对数空间复杂度

空间复杂度介于线性和平方之间,通常见于一些特殊的排序算法中。
归并排序。在归并排序中,虽然每次合并操作都需要O(n)的空间,但由于其递归的性质,通常需要O(log n)层递归调用,因此整体的空间复杂度可能表现为O(n log n)。

O(n^2) — 平方空间复杂度

需要的空间与输入数据的规模的平方成正比。
一些特定的算法问题,如存储一个n x n的二维数组。