数组是一种线性数据结构,用于存储相同类型的一组元素。
1. 数组的基本概念
定义
- 数组:是一种连续的内存空间,用于存储固定数量的相同类型的元素。
- 索引:数组中的每个元素都有一个唯一的整数索引(从0开始),通过索引可以快速访问和修改元素。
特点
- 固定大小:在创建数组时需要指定其大小,并且不能动态改变大小。
- 快速访问:可以通过索引直接访问任何位置的元素,时间复杂度为O(1)。
- 连续存储:数组中的元素在内存中是连续存储的。
2. 数组的操作
创建数组
在大多数编程语言中,创建一个数组需要指定其大小和类型。以下是一些常见编程语言的示例:
# Python
arr = [0] * 10 # 创建一个包含10个元素的数组,初始值为0
// Java
int[] arr = new int[10]; // 创建一个包含10个整数的数组,初始值为0
// C++
int arr[10] = {}; // 创建一个包含10个整数的数组,初始值为0
访问元素
通过索引可以访问数组中的元素。例如:
arr = [1, 2, 3, 4, 5]
print(arr[2]) # 输出 3
修改元素
同样可以通过索引修改数组中的元素:
arr = [1, 2, 3, 4, 5]
arr[2] = 10
print(arr) # 输出 [1, 2, 10, 4, 5]
遍历数组
可以使用循环遍历数组中的所有元素:
arr = [1, 2, 3, 4, 5]
for i in range(len(arr)):
print(arr[i])
3. 数组的应用场景
- 存储一组数据:如分数、学生成绩等。
- 实现其他数据结构:如栈和队列的基础实现。
- 缓存:在内存中缓存数据,提高访问速度。
4. 数组的优缺点
优点
- 快速访问:通过索引可以直接访问元素,时间复杂度为O(1)。
- 连续存储:便于内存管理,可以进行块级别的读写操作。
缺点
- 固定大小:一旦创建后不能动态改变大小。
- 插入和删除效率低:在数组中间插入或删除元素需要移动其他元素,时间复杂度为O(n)。
5. 数组的变种
- 多维数组:如二维数组(矩阵)用于表示表格数据。
- 稀疏数组:用于存储大量零值的数据,节省内存空间。
- 动态数组:可以在运行时改变大小的数组,如Python中的
list
。
6. 示例代码
以下是一些常见编程语言中使用数组的基本示例:
# Python
arr = [1, 2, 3, 4, 5]
print(arr[2]) # 输出 3
arr[2] = 10
print(arr) # 输出 [1, 2, 10, 4, 5]
for i in range(len(arr)):
print(arr[i])
// Java
int[] arr = {1, 2, 3, 4, 5};
System.out.println(arr[2]); // 输出 3
arr[2] = 10;
System.out.println(Arrays.toString(arr)); // 输出 [1, 2, 10, 4, 5]
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
// C++
#include <iostream>
using namespace std;
int main() {
int arr[5] = {1, 2, 3, 4, 5};
cout << arr[2] << endl; // 输出 3
arr[2] = 10;
for (int i = 0; i < 5; i++) {
cout << arr[i] << " ";
}
cout << endl;
return 0;
}