概念定义
- 输入空间:存储输入数据所需的空间大小
- 暂存空间:算法运行过程中,存储所有中间变量和对象等数据所需的空间大小
- 输出空间:算法运行返回时,存储输出数据所需的空间大小
通常情况下,空间复杂度是指在输入数据大小为N时,算法运行所使用的【暂存空间】 + 【输出空间】的总体大小
而根据不同来源,算法使用的内存空间分为三类:
指令空间:
编译后,程序指令所使用的内存空间
数据空间:
算法中的各项变量使用的空间,包括:声明的常量、变量、动态数组、动态对象等使用的内存空间。
栈帧空间:
程序调用函数是基于栈实现的,函数在调用期间,占用常量大小的栈帧空间,直至返回后释放。
符号表示
通常情况下,空间负责度统计算法在最差情况下使用的空间大小,以体现算法运行所需预留的空间量,使用符号O表示。
最差情况有两层含义,分别为【最差输入数据】、算法运行中的【最差运行点】。
常见种类
根据从小到大排序,常见的算法空间复杂度有:
O(1)<O(logN)<O(N)<O(N2)<O(2N)
参考资料:https://leetcode-cn.com/leetbook/read/illustration-of-algorithm/r8ytog/