冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。
这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序的基本步骤
比较相邻的元素 。如果第一个比第二个大,就交换它们两个。对每一对相邻元素做同样的工作
,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
冒泡排序的示例
假设我们有一个数组 `int nums = {5, 4, 3, 2, 1};`,我们将通过冒泡排序将其从小到大排序:
第一轮
比较 `nums` 和 `nums`,因为 `5 > 4`,交换它们的位置:[1, 5, 3, 2, 4]
比较 `nums` 和 `nums`,因为 `5 > 3`,交换它们的位置:[1, 3, 5, 2, 4]
比较 `nums` 和 `nums`,因为 `5 > 2`,交换它们的位置:[1, 3, 2, 5, 4]
比较 `nums` 和 `nums`,因为 `5 > 1`,交换它们的位置:[1, 3, 2, 1, 5]
第二轮
比较 `nums` 和 `nums`,因为 `1 < 3`,不交换。
比较 `nums` 和 `nums`,因为 `3 > 2`,交换它们的位置:[1, 2, 3, 1, 5]
比较 `nums` 和 `nums`,因为 `3 > 1`,交换它们的位置:[1, 2, 1, 3, 5]
比较 `nums` 和 `nums`,因为 `3 < 5`,不交换。
第三轮
比较 `nums` 和 `nums`,因为 `1 < 2`,不交换。
比较 `nums` 和 `nums`,因为 `2 < 1`,交换它们的位置:[1, 1, 2, 3, 5]
比较 `nums` 和 `nums`,因为 `2 < 3`,不交换。
比较 `nums` 和 `nums`,因为 `3 < 5`,不交换。
第四轮
比较 `nums` 和 `nums`,因为 `1 < 1`,不交换。
比较 `nums` 和 `nums`,因为 `1 < 2`,不交换。
比较 `nums` 和 `nums`,因为 `2 < 3`,不交换。
比较 `nums` 和 `nums`,因为 `3 < 5`,不交换。
排序完成,最终结果是 `[1, 1, 2, 3, 5]`。
如何查看冒泡排序程序
要查看冒泡排序程序,你可以按照以下步骤操作:
编写代码:
创建一个C语言文件,定义待排序的数列和变量,并实现冒泡排序的逻辑。
编译运行:
使用C编译器编译代码,并运行程序以查看排序结果。
观察结果:
检查输出结果,确保数字按预期顺序排列。
例如,以下是一个简单的C语言冒泡排序程序示例: