数组

数组

定义

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

属性

线性表

连续内存空间

相同数据类型

功能

删除元素

插入元素

查询元素

复杂度分析

技巧

插入情形一:如果数组中存储的数据没有任何规律,先要将某个数据插入到第k个位置,怎么才能避免大规模的数据搬移?


插入技巧.png

答:直接将第k位的数据搬移到数组元素的最后,然后将新数据直接放入第k个位置;

删除情形一:如果并不追求数组中数据的连续性,将多次删除操作放在一起执行。最开始数组还有空心空间时,如果要删除某个数据,并不真正的搬移数据,只是记录数据已经被删除;等到数组没有更多存储空间时,触发一次真正的数据迁移。


数组删除技巧.png

画外音:这有点类似于JVM的垃圾回收算法中的标记清除;文件系统中挂载功能和卸载功能的实现依赖的inode节点中的link字段;

使用场景

数据大小事先确定,且用不到ArrayList的大部分方法;

业务开发使用容器,底层框架开发比如网络框架建议使用数组;

问题

为什么数组的下标是从0开始,而不是1?

推导两维数组的内存寻址公式

你可能感兴趣的:(数组)