C语言冒泡排序详解:原理、代码实现与运行结果
冒泡排序是编程入门的基础算法之一。本文针对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语言编程教程的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









