得鹿梦鱼 得鹿梦鱼

概述

静态数组

「静态数组」就是一块连续的内存空间,我们可以通过索引来访问这块内存空间中的元素,这才是数组的原始形态

为什么数组的索引从0开始?

就是方便取地址。arr[0] 就是 arr 的首地址,从这个地址往后的 4 个字节存储着第一个元素的值;arr[1] 就是 arr 的首地址加上 1 * 4 字节,也就是第二个元素的首地址,这个地址往后的 4 个字节存储着第二个元素的值。arr[2], arr[3] 以此类推

时间复杂度

增:
在末尾追加元素:O1
在中间(非末尾)插入元素:ON
删:
删除末尾元素:O1
删除中间(非末尾)元素:ON
查:给定指定索引,查询索引对应的元素的值,时间复杂度O1
改:给定指定索引,修改索引对应的元素的值,时间复杂度O1

扩缩容

在实际使用动态数组时,缩容也是重要的优化手段。比方说一个动态数组开辟了能够存储 1000 个元素的连续内存空间,但是实际只存了 10 个元素,那就有 990 个空间是空闲的。为了避免资源浪费,我们其实可以适当缩小存储空间,这就是缩容

实现参考动态数组