📜  一维数组 (1)

📅  最后修改于: 2023-12-03 14:48:46.579000             🧑  作者: Mango

一维数组介绍

一维数组是由同一类型的元素构成的线性集合,每个元素可以通过一个索引来访问,索引通常是整数。一维数组是所有数据结构中最简单的一种。

定义和初始化

一维数组的定义和初始化通常有以下两种方式。

静态定义

在静态定义中,我们需要明确指定数组的大小,并对数组元素进行初始化。

int a[5] = {1, 2, 3, 4, 5};

以上代码定义了一个包含 5 个元素的整型数组,数组的值分别为 1,2,3,4,5。

动态定义

在动态定义中,我们可以在程序运行时动态地指定数组的大小,并对数组元素进行初始化。

int n;
scanf("%d", &n);
int a[n];
for (int i = 0; i < n; i++) {
    a[i] = i;
}

以上代码动态定义了一个包含 n 个元素的整型数组,在 for 循环中对数组元素进行了初始化。

访问和修改数组元素

我们可以使用中括号运算符 [] 来访问和修改数组元素。

int a[5] = {1, 2, 3, 4, 5};
printf("%d\n", a[0]);  // 输出 1
a[1] = 10;
printf("%d\n", a[1]);  // 输出 10

以上代码访问数组元素和修改数组元素。

数组的应用

一维数组常常被用于存储一组数据,并对这些数据进行处理。

数组排序
int n;
scanf("%d", &n);
int a[n], i, j, temp;
for (i = 0; i < n; i++) {
    scanf("%d", &a[i]);
}
for (i = 0; i < n - 1; i++) {
    for (j = 0; j < n - 1 - i; j++) {
        if (a[j] > a[j + 1]) {
            temp = a[j];
            a[j] = a[j + 1];
            a[j + 1] = temp;
        }
    }
}
for (i = 0; i < n; i++) {
    printf("%d ", a[i]);
}

以上代码实现了冒泡排序算法,对输入的一维数组进行排序,并输出排序后的结果。

数组查找
int n;
scanf("%d", &n);
int a[n], x, i, flag = 0;
for (i = 0; i < n; i++) {
    scanf("%d", &a[i]);
}
scanf("%d", &x);
for (i = 0; i < n; i++) {
    if (a[i] == x) {
        flag = 1;
        printf("%d\n", i);
        break;
    }
}
if (flag == 0) {
    printf("not found\n");
}

以上代码实现了线性查找算法,对输入的一维数组进行查找,并输出查找结果。

总结

一维数组是一种比较基础的数据结构,其应用范围非常广泛。熟练掌握一维数组的定义、初始化、访问和修改方法,能够非常好地提高程序员的编程能力。