点击蓝色

图片

关注我们

图片

图片

C++基础知识014-冒泡排序

图片

冒泡排序详细讲解

冒泡排序

要理解 C++ 中的冒泡排序,我们可以从一个生活化的场景入手 —— 想象一群小朋友排队,我们要让他们按身高从矮到高站好。冒泡排序就像一个 “耐心的管理员”,通过反复比较相邻的人,把高的慢慢挪到后面,就像水里的气泡慢慢往上冒一样,所以叫 “冒泡” 排序。

01

核心思路

假设我们有 5 个小朋友,身高分别是:1.3 米、1.5 米、1.2 米、1.4 米、1.1 米(用数字简化为:3、5、2、4、1)。我们要让他们从矮到高排好(即 1、2、3、4、5)。

冒泡排序的做法是:每次只比较相邻的两个小朋友,如果前面的比后面的高,就让他们交换位置。这样一轮一轮地比,每轮结束后,当前最高的小朋友就会 “冒” 到队伍最后。

02

一步步看冒泡过程

我们用数字[3,5,2,4,1]代表身高,来模拟每一轮的排序:

第 1 轮:把 “最高” 的放到最后

目标:找到 5(最大的数),让它移到最后。

步骤:

  1. 比较第 1 个和第 2 个:

  2. 3 和 5 → 3 矮,不用换 → 还是[3,5,2,4,1]

  3. 比较第 2 个和第 3 个:

  4. 5 和 2 → 5 高,交换 → 变成[3,2,5,4,1]

  5. 比较第 3 个和第 4 个:

  6. 5 和 4 → 5 高,交换 → 变成[3,2,4,5,1]

  7. 比较第 4 个和第 5 个:

  8. 5 和 1 → 5 高,交换 → 变成[3,2,4,1,5]

第 1 轮结束后,最大的 5 已经到最后了(固定不动了)。

第 2 轮:把 “第二高” 的放到倒数第二

目标:找到 4(剩下的最大数),让它移到倒数第二。

注意:最后一个位置的 5 已经排好,不用再比了,只比前 4 个。

步骤:

  1. 比较第 1 个和第 2 个:

  2. 3 和 2 → 3 高,交换 → 变成[2,3,4,1,5]

  3. 比较第 2 个和第 3 个:

  4. 3 和 4 → 3 矮,不用换 → 还是[2,3,4,1,5]

  5. 比较第 3 个和第 4 个:

  6. 4 和 1 → 4 高,交换 → 变成[2,3,1,4,5]

第 2 轮结束后,4 到了倒数第二(固定不动了)。

第 3 轮:把 “第三高” 的放到倒数第三

目标:找到 3(剩下的最大数),移到倒数第三。

只比前 3 个(因为最后两个已排好):

  1. 比较第 1 个和第 2 个:

  2. 2 和 3 → 2 矮,不用换 → 还是[2,3,1,4,5]

  3. 比较第 2 个和第 3 个:

  4. 3 和 1 → 3 高,交换 → 变成[2,1,3,4,5]

第 3 轮结束后,3 到了倒数第三(固定不动了)。

第 4 轮:把剩下的排好

只剩前 2 个需要比较(因为后三个已排好):

  1. 比较第 1 个和第 2 个:

  2. 2 和 1 → 2 高,交换 → 变成[1,2,3,4,5]

排序完成!

03

C++代码怎么写?

用代码实现时,我们需要:

  1. 用 “数组” 存这些数字

  2. (比如int arr[5] = {3,5,2,4,1};);

  3. 用 “循环” 重复多轮比较(外层循环控制轮数);

  4. 每轮中用 “循环” 比较相邻元素(内层循环控制每轮的比较次数)。

完整代码示例:

image.png

04

关键知识点总结

  1. C++基础知识014[笔记-冒泡排序]

    原创 乐博趣杨杨 乐博趣机器人开封教育中心 2025年10月29日 19:39 河南

  2. ✦轮数:

  3. n 个元素需要 n-1 轮(最后一个元素不用比);

  4. ✦每轮比较次数:

  5. 第 1 轮比 n-1 次,第 2 轮比 n-2 次……(因为后面的元素已排好);

  6. ✦交换技巧:

  7. 用临时变量temp保存值,避免交换时数据丢失(就像交换两个杯子的水,需要一个空杯子过渡)。

通过这个方法,即使是很多数字,也能像排队一样慢慢排整齐。冒泡排序虽然简单,但能帮我们理解 “排序” 的本质 —— 通过比较和交换,让数据按规则排列。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐