C语言冒泡排序详解:原理、代码实现与运行结果

云舒
云舒
发布时间:2026-10-16 | 3人浏览过
原创

冒泡排序是编程入门的基础算法之一。本文针对C语言,深入剖析其从小到大排序的核心逻辑:通过反复遍历数组,比较相邻元素的大小并在逆序时交换,使较大值像气泡一样逐渐浮向末尾。文章附带标准C语言源码及运行效果演示,适合需要了解或复习该算法的开发者阅读。

算法原理分析

冒泡排序(Bubble Sort)是一种基础的比较排序算法。它的基本思想是通过重复遍历要排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就把它们交换过来。对于从小到大的排序而言,经过一轮遍历后,最大的元素会被移动到最后的位置;下一轮只需处理剩余未排好序的元素,直到整个过程完成。

本例采用从数组头部开始轮询的方式,通过双重循环结构实现:
- 外层循环控制需要进行的轮数。
- 内层循环负责在每一轮中执行相邻元素的比较与交换。

C语言代码实现

以下为完整的C语言实现代码,包含用户交互输入、核心排序函数定义及结果打印。代码中使用宏定义控制了数组大小,方便测试不同长度的数据。

#include <stdio.h>
#define INTEGER_RANGE 10  // 定义待排序数字的数量

// 冒泡排序函数声明
void bubule_sort(int *array, int len);

int main()
{
    int i = 0;
    int array[INTEGER_RANGE] = {0};
    
    // 1. 获取用户输入
    printf("请输入%d个数\n", INTEGER_RANGE);
    for(i = 0; i < INTEGER_RANGE; i++)
        scanf("%d", array + i);
    
    // 2. 调用排序函数
    bubule_sort(array, INTEGER_RANGE);
    
    // 3. 输出排序后的结果
    printf("排序后:\n");
    for(i = 0; i < INTEGER_RANGE; i++)
        printf("%d ", array[i]);
    printf("\n");
    
    return 0;
}

/**
 * @brief 冒泡排序实现
 * @param array: 指向整型数组的指针
 * @param len: 数组长度
 */
void bubule_sort(int *array, int len)
{
    int i = 0;
    int j = 0;
    int tmp = 0;
    
    // 外层循环:控制比较的轮数
    for(i = 0; i < len - 1; i++)
    {
        // 内层循环:执行相邻元素比较与交换
        // len - 1 - i 表示每轮结束后,末尾的 i+1 个元素已有序,无需再比
        for(j = 0; j < len -1 - i; j++)
        {
            // 如果前一个元素大于后一个元素,则交换位置
            if(array[j] > array[j + 1])
            {
                tmp = array[j];
                array[j] = array[j + 1];
                array[j + 1] = tmp;
            }
        }
    }
}

运行结果验证

代码编译运行后,程序会提示用户输入指定数量的整数。输入完成后,控制台将按从小到大的顺序输出这些数字。下方截图展示了典型的输入与输出效果:

总结

通过上述代码和解析可以看出,冒泡排序的逻辑非常直观。虽然在实际工程中它可能不是最高效的选择,但作为理解算法思维、循环结构和内存操作的入门案例,掌握其实现细节非常有帮助。以上就是C语言冒泡排序算法详解的详细内容,更多关于C语言编程教程的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表