空间复杂度

空间复杂度衡量的是算法执行过程中,除了输入数据本身外,额外占用的内存空间大小。
以下是关于冒泡排序的空间复杂度是O(1)的详细解释:

1、从数量和大小上看,变量的数量和个数固定
输入数据:vector&vec是引用传递,没有复制原数组,不算额外空间
局部变量:
int j:外层循环计数器,固定4字节
int i:内层循环计数器,固定4字节
bool flag :标记变量,固定1字节
swap操作内部的临时变量:交换两个int时,最多用一个临时int或寄存器,空间不随n增长
这些变量的数量是固定的3~4个,不管vec里有10个元素还是10000个元素,都不会多开一个变量,所以数量上是常数级

2、从生命周期上看:复用同一块内存
i、j、flag都是在循环里反复使用,不会每次循环都重新分配内存
swap里的临时变量、每次交换结束就释放,全程只复用那一块小内存
整个函数执行期间,没有随n增长的数组、容器或递归栈

总结:理解空间复杂度的核心是关注底层的内存开辟

posted @ 2026-03-12 11:22  AlexXuu  阅读(3)  评论(0)    收藏  举报