数据结构:数组

要点

  1. 线性表结构
  2. 连续的内存空间和相同的数据类型

低效的插入删除

  • 如果要保持连续的分布,会涉及数据移位,最坏情况为O(n)
  • 删除可以优化为标记删除

扩展

  1. 有了容器如ArrayList,数组是否没了用武之地?
    (1) 如果指定了大小,又没有复杂操作,可直接用数组
    (2) 容器不支持原始数据类型,比如int, long,用包装类又低效

注意

  1. 查找时间复杂度不一定为O(1), 根据下标访问才是O(1)
  2. Java的多维数组寻址不一定满足连续性,比如 int arr[][] = new int[3][],每一行数组的长度不一定相等,比如 arr[0] = {1}, arr[1]={1,2}
  3. Java原始类型的arr 分配在栈上,而new的内容{0,1,2}在椎上
  4. Java对象类型的arr 分配在栈上,堆上分为两部分,一部分是数组元素是存储对象的地址,是在连续的空间上,而具体对象是存储并不一定是连续的空间
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值