数组是一种线性数据结构,用于存储相同类型的一组元素。

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;
}

发表评论