数据结构_04空间复杂度

  1. 如果说时间复杂度是对算法运行次数的表征,那么空间复杂度则是算法运行时所占内存大小的度量
  2. java中常见内存占用
基本数据类型内存占用字节数
byte1
short2
char2
int4
long8
float4
double8
boolean1
  1. 计算机访问内存的方式都是一次一个字节,一个字节又是8位

  2. 一个引用需要8个字节表示,java中的引用就是变量,例如
    Date a=new Date();
    a这个变量就需要8个字节来表示

  3. 创建一个对象时,如new Date(),除了Date对象内部存储的数据占用对应的字节数外,该对象本身还占用内存开销,每个对象的自身开销为16个字节,用来保存对象的头信息——如int类型,地址等

  4. 一般内存的使用,如果不够8个字节,自动填充为8个,例如
    public class A{
    public int a=1;
    }
    通过new A()创建一个对象
    这里的整型成员变量a占用4个字节,
    而对象本身占用16个字节,但不是20个字节,因为会自动填充为8的倍数,因此一共占用24个字节,

  5. java中的数组被限定为对象,因为有一个属性length,所以需要额外的内存来记录长度,一个原始数据类型的数组对象需要24个字节的信息头(包括对象本身16个字节,加上4个字节保存长度,以及4个填充字节)加上保存值所需的内存

在这里插入图片描述
算法1:n,temp都是整型基本数据类型故占用4个字节——O(8)
算法2:n是整型基本数据类型(4),temp是整形数组(24+4n)——O(28+4n)
一个普通对象,占用8 bytes
数组,占用 12 bytes,包含普通对象的 8 bytes + 4 bytes(数组长度)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值