返回

数组排序c语言:C语言数组排序,从基础到实践

来源:网络   作者:   日期:2025-11-01 12:03:05  

数组的基本概念

数组是一组相同类型数据的集合,这些数据在内存中连续存储,在C语言中,数组的定义和使用非常灵活,但排序操作需要借助循环结构和条件判断来实现,数组的排序通常是指将数组中的元素按照一定的规则(如升序或降序)重新排列。

定义一个整数数组:

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

这个数组包含5个元素,分别是5、3、1、4、2,排序的目标是将这些元素按从小到大的顺序排列。

数组排序c语言:C语言数组排序,从基础到实践


选择排序

选择排序是一种简单直观的排序算法,它的基本思想是:每一趟从未排序的部分中选出最小(或最大)的元素,将其放到已排序部分的起始位置。

代码实现:

#include <stdio.h>
void selectionSort(int arr[], int n) {
    int i, j, min_idx;
    for (i = 0; i < n-1; i++) {
        min_idx = i;
        for (j = i+1; j < n; j++) {
            if (arr[j] < arr[min_idx]) {
                min_idx = j;
            }
        }
        // 交换最小元素
        int temp = arr[i];
        arr[i] = arr[min_idx];
        arr[min_idx] = temp;
    }
}
int main() {
    int arr[] = {5, 3, 1, 4, 2};
    int n = sizeof(arr) / sizeof(arr[0]);
    selectionSort(arr, n);
    printf("排序后的数组: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

输出结果:

数组排序c语言:C语言数组排序,从基础到实践

排序后的数组: 1 2 3 4 5

冒泡排序

冒泡排序是另一种基础的排序算法,它通过重复地交换相邻元素的位置,将较大的元素“冒泡”到数组的末尾,冒泡排序的时间复杂度为O(n²),虽然效率不高,但实现简单,适合初学者理解。

代码实现:

#include <stdio.h>
void bubbleSort(int arr[], int n) {
    int i, j, temp;
    for (i = 0; i < n-1; i++) {
        for (j = 0; j < n-i-1; j++) {
            if (arr[j] > arr[j+1]) {
                // 交换相邻元素
                temp = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = temp;
            }
        }
    }
}
int main() {
    int arr[] = {5, 3, 1, 4, 2};
    int n = sizeof(arr) / sizeof(arr[0]);
    bubbleSort(arr, n);
    printf("排序后的数组: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

输出结果:

数组排序c语言:C语言数组排序,从基础到实践

排序后的数组: 1 2 3 4 5

插入排序

插入排序类似于我们整理扑克牌的过程,它通过将未排序的元素逐个插入到已排序的序列中,从而逐步构建有序数组,插入排序的时间复杂度也是O(n²),但在实际应用中,它在部分情况下表现较好。

代码实现:

#include <stdio.h>
void insertionSort(int arr[], int n) {
    int i, j, temp;
    for (i = 1; i < n; i++) {
        int key = arr[i];
        j = i - 1;
        while (j >= 0 && key < arr[j]) {
            arr[j+1] = arr[j];
            j = j - 1;
        }
        arr[j+1] = key;
    }
}
int main() {
    int arr[] = {5, 3, 1, 4, 2};
    int n = sizeof(arr) / sizeof(arr[0]);
    insertionSort(arr, n);
    printf("排序后的数组: ");
    for (int i = 0; i < n; i++) {
        printf("%d ", arr[i]);
    }
    return 0;
}

输出结果:

排序后的数组: 1 2 3 4 5

数组排序是C语言编程中的基础内容,掌握选择排序、冒泡排序和插入排序的实现方法,有助于理解更复杂的排序算法,虽然这些基础排序算法在时间复杂度上并不高效,但它们是学习高级排序算法(如快速排序、归并排序)的良好起点。

在实际编程中,可以根据数据量的大小和具体需求选择合适的排序算法,对于小规模数据,基础排序算法已经足够;而对于大规模数据,则需要考虑更高效的排序方法。

希望本文能帮助你更好地理解和应用数组排序算法,提升C语言编程能力!

分类:编程
责任编辑:今题网
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。

相关文章:

文章已关闭评论!