秒懂算法:用常识解读数据结构与算法
上QQ阅读APP看书,第一时间看更新

1.2 数组:基础数据结构

数组是计算机科学中最基本的数据结构之一。我猜你以前用过数组,所以大概知道数组就是一系列数据元素。数组的用途广泛,在许多场合能发挥作用。先来看一个简单的例子。

要是看过那些允许用户创建并使用杂货店购物清单的应用的源代码,你可能会发现下面这样的内容。

array = ["apples", "bananas", "cucumbers", "dates", "elderberries"]

这个数组包含5个字符串,每个字符串表示我要在超市购买的东西。(你一定要试试接骨木莓。)

数组有自己专用的一些术语。

数组大小指的是数组能存放的数据元素的数量。因为上面这个购物清单数组能存储5个值,所以它的大小是5。

数组的索引可以用来标记数据在数组中的位置。

在大多数编程语言中,索引从0开始。所以在我们的例子中,"apples"的索引是0,而"elderberries"的索引是4,如下图所示。

数据结构操作

以数组为例,要理解数据结构的性能,需要分析代码操作数据结构的常用方式。

许多数据结构有以下4种基本使用方法,我们称其为操作

  • 读取:从数据结构的特定位置查看某数据。对数组来说,就是查看特定索引的值。例如,在购物清单数组中查看位于索引2的物品就是一种读取
  • 查找:寻找数据结构中的特定值。对数组来说,就是检查数组中是否存在这个值。如果存在,就检查它的索引。例如,在购物清单中寻找"dates"的索引就是一种查找
  • 插入:向数据结构中添加新的值。对数组来说,就是给数组增加一个位置,在里面添加一个新值。向购物清单中添加"figs",就是在向数组插入新值。
  • 删除:从数据结构中移除一个值。对数组来说,这意味着把其中一项移除。如果把"bananas"从购物清单中去掉,就从数组中删除了这个值。

本章会分析数组的这4种操作的执行速度。