数组“越界”的概念_数据结构之数组

概念:一种线性表数据结构,使用一组连续的内存空间,来存储一组有相同类型的数据。

线性数据结构(最多只有前后两个方向):数组、队列、栈、链表
非线性数据结构:树、图、堆

问题1:数组下标为什么从0开始?

因为数组是一段连续的内存,假如数组的所占用的内存起始地址为1000,则数组的第n个元素的起始内存地址为1000+n*每个元素所占内存的长度,n需要0开始。

问题2:数组的优缺点?

数组因为有索引,支持随机访问,根据下标查找的复杂度为O(1),因此在查找元素时速度较快,但是在增删时就会根据要删除或插入的位置去移动已有元素,平均复杂度为O(n),最好的情况为操作最后一个元素,复杂度为O(1)。

小知识点:

  • 删除优化:删除数组元素时,为避免频繁的数据搬运,就暂时不删除,等数组没有存储空间时再真正的执行删除操作,JVM的标记清楚垃圾回收算法就是一个案例。
  • C语言中内存越界:访问数组的本质就是访问一段连续的内存,只要数组通过偏移计算得到的内存地址是可用的,那么c语言就不会报错。

问题3:容器能否代替数组?

容器的优点:

  • 封装数组操作,比如crud
  • 动态扩容(通过指定容器大小,避免频繁的扩容,提升性能)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值