数组
最基本的数据结构之一,在内存中连续存储相同类型的元素,支持随机访问。
核心特性
- 连续内存:所有元素在内存中连续排列
- 随机访问:通过「首地址 + 索引 × 元素大小」公式,在 $O(1)$ 时间内访问任意元素
- 固定大小:静态数组在创建时确定大小,不可改变(动态数组通过包装实现可变)
类型
静态数组
- 大小固定,声明时确定
- 内存连续,效率高
- 不适合大小不确定的场景
动态数组
- 底层是静态数组 + 自动扩缩容机制
- 详见 动态数组 概念页
环形数组
- 逻辑上首尾相连,物理上仍是线性数组
- 详见 环形数组技巧及实现
基本操作时间复杂度
| 操作 | 时间复杂度 | 说明 |
|---|---|---|
| 查/改(给定索引) | $O(1)$ | 随机访问 |
| 末尾增/删 | $O(1)$ | 直接操作 |
| 中间增/删 | $O(N)$ | 需要数据搬移 |
| 查找元素 | $O(N)$ | 需要遍历 |