Data Structures Algorithms 简明教程
Array Data Structure
What is an Array?
数组是一种线形数据结构,被定义为具有相同或不同数据类型的元素的集合。它们存在于单维度和多维度中。当有必要将多个类似性质的元素一起存储在一个地方时,这些数据结构就会出现在图片中。
数组索引和内存地址之间的区别在于,数组索引充当键值来标记数组中的元素。然而,内存地址是可用空闲内存的起始地址。
以下是理解数组概念的重要术语。
-
Element - 存储在数组中的每个项称为一个元素。
-
Index - 数组中每个元素的位置都有一个数字索引,用于标识元素。
Need for Arrays
数组用作从小型排序问题到更为复杂问题(例如旅行商问题)的许多问题的解决方案。除了数组以外,还有许多能够为这些问题提供有效时间和空间复杂度的数据结构,那么使用数组有什么好处?答案在于随机访问查找时间。
数组提供了 O(1) 的随机访问查找时间。这意味着访问数组的第 1 个索引和数组的第 1000 个索引所需的时间都是一样的。这是由于数组带有指针和偏移值。指针指向内存的正确位置,偏移值表明在所述内存中查找距离。
array_name[index]
| |
Pointer Offset
因此,在包含 6 个元素的数组中,要访问第 1 个元素,数组指向第 0 个索引。类似地,要访问第 6 个元素,数组指向第 5 个索引。
Array Representation
数组表示为多个存储桶的集合,其中每个存储桶存储一个元素。这些存储桶的索引从“0”到“n-1”,其中 n 是特定数组的大小。例如,大小为 10 的数组将具有索引为 0 到 9 的存储桶。
此索引也将类似于多维数组。如果它是一个二维数组,它将在每个存储桶中具有子存储桶。然后,它将被索引为 array_name[m][n],其中 m 和 n 是数组中每一级的尺寸。
根据上述说明,以下是要考虑的重要事项。
-
Index starts with 0.
-
数组长度为 9,这意味着它可以存储 9 个元素。
-
可以通过其索引访问每个元素。例如,我们可以获取索引 6 处的元素,如 23。
Basic Operations in Arrays
数组中的基本操作是插入、删除、搜索、显示、遍历和更新。通常执行这些操作以修改数组中的数据或报告数组的状态。
数组支持的基本操作如下。
-
Traverse - 逐个打印所有数组元素。
-
Insertion - 在给定的索引处添加一个元素。
-
Deletion - 删除给定索引处的元素。
-
Search - 使用给定索引或按值搜索元素。
-
Update - 更新给定索引处的元素。
-
Display − 显示数组的内容。
在 C 中,当一个数组用大小初始化时,它会按以下顺序将其默认值分配给其元素。
Array - Insertion Operation
在插入操作中,我们将一个或多个元素添加到数组。根据要求,可以在数组的开头、结尾或任何给定索引处添加新元素。这是使用编程语言的输入语句完成的。
Algorithm
以下是将元素插入线性阵列中的算法,直到我们到达数组的末尾 −
1. Start
2. Create an Array of a desired datatype and size.
3. Initialize a variable 'i' as 0.
4. Enter the element at ith index of the array.
5. Increment i by 1.
6. Repeat Steps 4 & 5 until the end of the array.
7. Stop
Output
Array Before Insertion:
LA[0] = 0
LA[1] = 0
LA[2] = 0
Inserting elements..
Array After Insertion:
LA[0] = 2
LA[1] = 3
LA[2] = 4
LA[3] = 5
LA[4] = 6
对于数组插入操作的其他变体, click here 。
Array - Deletion Operation
在此数组操作中,我们将从数组的特定索引处删除一个元素。当我们将后续索引中的值分配给当前索引时,就会发生此删除操作。
Array - Search Operation
使用键在数组中搜索元素;键元素顺序比较数组中的每一个值,以检查键是否存在于数组中。
Array - Traversal Operation
此操作会遍历数组的所有元素。我们使用循环语句完成此操作。