数组
定义
数组是一种线性表结构,它使用一组连续的内存空间,来存储一组具有相同类型的数据。
属性
线性表
连续内存空间
相同数据类型
功能
删除元素
插入元素
查询元素
复杂度分析
技巧
插入情形一:如果数组中存储的数据没有任何规律,先要将某个数据插入到第k个位置,怎么才能避免大规模的数据搬移?
答:直接将第k位的数据搬移到数组元素的最后,然后将新数据直接放入第k个位置;
删除情形一:如果并不追求数组中数据的连续性,将多次删除操作放在一起执行。最开始数组还有空心空间时,如果要删除某个数据,并不真正的搬移数据,只是记录数据已经被删除;等到数组没有更多存储空间时,触发一次真正的数据迁移。
画外音:这有点类似于JVM的垃圾回收算法中的标记清除;文件系统中挂载功能和卸载功能的实现依赖的inode节点中的link字段;
使用场景
数据大小事先确定,且用不到ArrayList的大部分方法;
业务开发使用容器,底层框架开发比如网络框架建议使用数组;
问题
为什么数组的下标是从0开始,而不是1?
推导两维数组的内存寻址公式