数组

Array

数组是一种线性数据结构。其将相同类型的元素存储在连续的内存空间中。我们将元素在数组中的位置称为该元素的索引 index

Pasted image 20250718004739.png

数组的操作

初始化数组

访问元素

数组元素被存储在连续的内存空间中,这意味着计算数组元素的内存地址非常容易。
索引本质上是内存地址的偏移量,一般编程语言首个元素的地址偏移量为 0

在数组中访问元素非常高效,我们可以在 𝑂(1) 时间内随机访问数组中的任意一个元素。

插入元素

如果想在数组中间插入一个元素,则需要将该元素之后的所有元素都向后移动一位,之后再把元素赋值给该索引。
由于数组的长度是固定的,因此插入一个元素必定会导致数组尾部元素丢失

删除元素

若想删除索引 𝑖 处的元素,则需要把索引 𝑖 之后的元素都向前移动一位

数组的插入与删除操作有以下缺点

遍历数组

既可以通过索引遍历数组,也可以直接遍历获取数组中的每个元素。

查找元素

在数组中查找指定元素需要遍历数组,每轮判断元素值是否匹配,若匹配则输出对应索引。因为数组是线性数据结构,所以上述查找操作被称为“线性查找”。

扩容数组

在大多数编程语言中,数组的长度是不可变的。扩容数组则需重新建立一个更大的数组,然后把原数组元素依次复制到新数组。这是一个 O(n) 的操作,在数组很大的情况下非常耗时。

优点与局限性

数组存储在连续的内存空间内,且元素类型相同。这种做法包含丰富的先验信息,系统可以利用这些信息来优化数据结构的操作效率。

连续空间存储是一把双刃剑,其存在以下局限性。

数组典型应用

数组是一种基础且常见的数据结构,既频繁应用在各类算法之中,也可用于实现各种复杂数据结构。

编程语言中的具体实例

Matlab Array
C 语言数组

// 图片点击放大