【C语言-冒泡排序算法】实现对十个数字进行排序

目录

一、常见排序算法简介

二、冒泡排序算法原理

三、C 语言实现代码

四、运行示例与结果分析


        在 C 语言的学习和实际编程应用中,排序算法是一项基础且重要的技能。今天,我们就来探讨如何使用 C 语言对输入的十个数进行排序,这里将以经典的冒泡排序算法为例展开探讨。

一、常见排序算法简介

        排序算法有很多种,如冒泡排序、选择排序、插入排序、快速排序、归并排序等 。不同的排序算法在时间复杂度、空间复杂度和稳定性等方面各有特点。其中,冒泡排序是一种简单直观的排序算法,特别适合初学者入门学习。

二、冒泡排序算法原理

        冒泡排序的基本思想是重复地走访要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢 “浮” 到数列的顶端,就如同水中的气泡向上漂浮一样。

        在对长度为 n 的数组进行排序时,冒泡排序需要进行 n - 1 轮比较。每一轮比较都会将当前未排序部分中最大(或最小)的元素 “沉” 到末尾。例如,对于一个包含 10 个数的数组,第一轮比较需要比较 9 次,将最大的数放到数组的最后一个位置;第二轮比较需要比较 8 次,将第二大的数放到倒数第二个位置,以此类推,直到整个数组有序。

三、C 语言实现代码

  1. #include <stdio.h>
    
    
    // 交换两个数的函数
    
    void swap(int *a, int *b) {
    
        int temp = *a;
    
        *a = *b;
    
        *b = temp;}
    
    // 冒泡排序函数
    
    void bubbleSort(int arr[], int n) {
    
        int i, j;
    
        for (i = 0; i < n - 1; i++) {
    
            for (j = 0; j < n - i - 1; j++) {
    
                if (arr[j] > arr[j + 1]) {swap(&arr[j], &arr[j + 1]);}
    
            }
    
        }
    
    }
    
    // 打印数组的函数
    
    void printArray(int arr[], int size) {
    
        int i;
    
        for (i = 0; i < size; i++)
    
        printf("%d ", arr[i]);
    
        printf("\n");
    
    }
    
    
    int main() {
    
        int arr[10];
    
        int i;
    
        printf("请输入十个整数:\n");
    
        for (i = 0; i < 10; i++) {
    
            scanf("%d", &arr[i]);
    
        }
    
        int n = sizeof(arr) / sizeof(arr[0]);
    
        bubbleSort(arr, n);
    
        printf("排序后的数组为:\n");
    
        printArray(arr, n);
    
        return 0;
    
    }

在上述代码中:

  1. swap函数用于交换两个整数的值,通过指针操作实现数据交换。
  2. bubbleSort函数实现了冒泡排序算法,外层循环控制排序的轮数,内层循环用于每一轮比较和交换元素。
  3. printArray函数用于打印数组元素,方便查看排序前后的数组内容。
  4. 在main函数中,首先接收用户输入的十个整数,然后调用bubbleSort函数进行排序,最后调用printArray函数输出排序后的数组。

四、运行示例与结果分析

        假设我们输入的十个整数为:5 3 8 6 2 9 1 7 4 0 。运行程序后,输出结果为:0 1 2 3 4 5 6 7 8 9 。可以看到,程序成功地对输入的十个数进行了升序排序。

        冒泡排序的时间复杂度在最坏情况下为 O (n²),在最好情况下(数组已经有序)为 O (n),空间复杂度为 O (1) 。虽然冒泡排序效率相对较低,但它简单易懂,对于理解排序算法的基本思想和 C 语言数组操作非常有帮助。

        通过本文的介绍,相信你已经掌握了使用 C 语言和冒泡排序算法对十个数进行排序的方法。后续可以进一步学习其他更高效的排序算法,提升编程能力。

        若对代码还有疑问,或文章哪里有问题,欢迎指正。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_Auroral_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值