算法空间复杂度分析
1、Java中的常见内存占用
a、基本数据类型内存占用
数据类型 | 占用字节 |
---|---|
int | 4 |
short | 2 |
long | 8 |
byte | 1 |
float | 4 |
double | 8 |
boolean | 1 |
char | 2 |
2、计算机访问内存的方式是一次一个字节
3、一个引用类型(机器地址)需要8个字节
4、创建一个对象,比如new Date(),除了对象内部存储的数据(例如年月日等信息)占用的内存,该对象也占用内存,每个对象的自身内存占用是16个字节,用来保存对象的头信息。
5、一般内存的使用,如果不够8个字节,都会被自动填充为8字节。
6、java中的数组被限定为对象,他们一般都会因为记录长度而需要额外的内存,一个原始数据类型的数组一般需要24字节的有信息(16个创建自身数组对象占用,4字节用于保存数组长度以及4个填充字节),再加上所保存的内容所占用的字节。
2、算法的空间复杂度
算法的空间复杂度计算公式记做:S(n) = O(f(n)),其中n为输入规模,f(n)为语句所占存储空间的函数。
计算规则与时间复杂度计算规则相同,只是技术的对象不为语句执行次数,变成了存储空间