admin 管理员组

文章数量: 887021


2024年2月26日发(作者:客户管理系统立项)

c语言冒泡排序例子

C语言冒泡排序例子

冒泡排序(Bubble Sort)是一种简单的排序算法,它通过重复交换相邻的两个元素,将较大(或较小)的元素逐渐“冒泡”到待排序序列的顶端。

1. 例子一:升序排序

输入数组:[7, 2, 4, 1, 5]

步骤一

依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换位置。

比较过程:

• 第一轮:7 > 2,交换位置,数组变为 [2, 7, 4, 1, 5]

• 第二轮:7 > 4,交换位置,数组变为 [2, 4, 7, 1, 5]

• 第三轮:7 > 1,交换位置,数组变为 [2, 4, 1, 7, 5]

• 第四轮:7 > 5,交换位置,数组变为 [2, 4, 1, 5, 7]

步骤二

重复步骤一,但是每一轮比较的次数都会减少一个,因为每一轮都会将当前轮次最大(或最小)的元素“冒泡”到最终位置。

比较过程:

• 第一轮:依次比较相邻的两个元素,数组变为 [2, 4, 1, 5, 7]

• 第二轮:依次比较相邻的两个元素,数组变为 [2, 1, 4, 5, 7]

• 第三轮:依次比较相邻的两个元素,数组变为 [2, 1, 4, 5, 7]

• 第四轮:依次比较相邻的两个元素,数组变为 [1, 2, 4, 5, 7]

步骤三

重复步骤二,直到所有元素都排好序。

最终排序结果:[1, 2, 4, 5, 7]

2. 例子二:降序排序

输入数组:[3, 6, 2, 8, 1]

步骤一

依次比较相邻的两个元素,如果前一个元素小于后一个元素,则交换位置。

比较过程:

• 第一轮:3 < 6,不交换位置,数组不变

• 第二轮:6 > 2,交换位置,数组变为 [3, 2, 6, 8, 1]

• 第三轮:6 < 8,不交换位置,数组不变

• 第四轮:8 > 1,交换位置,数组变为 [3, 2, 6, 1, 8]

步骤二

重复步骤一,但是每一轮比较的次数都会减少一个,因为每一轮都会将当前轮次最大(或最小)的元素“冒泡”到最终位置。

比较过程:

• 第一轮:依次比较相邻的两个元素,数组变为 [2, 3, 6, 1, 8]

• 第二轮:依次比较相邻的两个元素,数组变为 [2, 3, 1, 6, 8]

• 第三轮:依次比较相邻的两个元素,数组变为 [2, 1, 3, 6, 8]

• 第四轮:依次比较相邻的两个元素,数组变为 [1, 2, 3, 6, 8]

步骤三

重复步骤二,直到所有元素都排好序。

最终排序结果:[1, 2, 3, 6, 8]

结论

冒泡排序是一种简单但效率较低的排序算法,时间复杂度为O(n^2)。它适用于小规模的排序问题,但对于大规模数据,效率较低。在实际应用中,通常使用更高效的排序算法,如快速排序或归并排序。

3. 例子三:特殊情况

输入数组:[5, 3, 2, 1, 4]

步骤一

依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换位置。

比较过程:

• 第一轮:5 > 3,交换位置,数组变为 [3, 5, 2, 1, 4]

• 第二轮:5 > 2,交换位置,数组变为 [3, 2, 5, 1, 4]

• 第三轮:5 > 1,交换位置,数组变为 [3, 2, 1, 5, 4]

步骤二

重复步骤一,但是每一轮比较的次数都会减少一个,因为每一轮都会将当前轮次最大(或最小)的元素“冒泡”到最终位置。

比较过程:

• 第一轮:依次比较相邻的两个元素,数组变为 [2, 3, 1, 5, 4]

• 第二轮:依次比较相邻的两个元素,数组变为 [2, 1, 3, 5, 4]

• 第三轮:依次比较相邻的两个元素,数组变为 [2, 1, 3, 4, 5]

步骤三

重复步骤二,直到所有元素都排好序。

最终排序结果:[1, 2, 3, 4, 5]

在这个特殊情况中,输入数组本身就是按照升序排列的,因此冒泡排序的效果并不明显。在实际应用中,如果已知数组已经有序,就可以在外层循环中添加一个标志位来判断是否需要继续排序,以提高算法的效率。

总结

通过以上例子,我们可以看到冒泡排序的基本原理和步骤。它是一种基础而简单的排序算法,但在处理大规模数据时效率较低。因此,在实际应用中,我们通常会选择更高效的排序算法来满足需求。


本文标签: 排序 数组 元素 算法 变为