当前位置: 首页 > news >正文

语言必学算法:冒泡排序超详细讲解,从原理到优化一次吃透

学 C 语言,绕不开的第一个算法就是冒泡排序。

它简单、经典、面试常问,也是所有新手建立 “算法思维” 的第一道门。

今天我把冒泡排序从原理→代码→优化→场景一次性讲透,看完你再也不会忘。

一、什么是冒泡排序?为什么叫 “冒泡”?

冒泡排序的核心思想非常形象:

越大的数字,会像水里的气泡一样,一步步 “浮” 到数组的最顶端。

它的逻辑只有两步:

两两比较相邻的两个数如果前面比后面大,就交换位置重复这个过程,直到整个数组有序。

因为每一轮循环,都会把当前最大的数送到最后面,像气泡上浮,所以叫冒泡排序。

二、冒泡排序的核心原理(新手必懂)

假设数组:5 3 8 4 2

第一轮:

3 和 5 交换 → 3 5 8 4 2

5 和 8 不换 → 3 5 8 4 2

8 和 4 交换 → 3 5 4 8 2

8 和 2 交换 → 3 5 4 2 8

最大的 8 浮到最后

第二轮:

3 和 5 不换

5 和 4 交换 → 3 4 5 2 8

5 和 2 交换 → 3 4 2 5 8

次大的 5 归位

…… 以此类推,直到全部有序。

三、最基础版冒泡排序(标准代码)

#include int main() { int arr[] = {5, 3, 8, 4, 2}; int n = sizeof(arr) / sizeof(arr[0]); // 外层循环:控制轮数 for (int i = 0; i < n - 1; i++) { // 内层循环:两两比较 for (int j = 0; j < n - 1 - i; j++) { if (arr[j] > arr[j + 1]) { // 交换 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } // 输出结果 for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }

代码关键点:

四、进阶:带优化的冒泡排序(面试加分)

基础版有个缺点:

即使数组已经有序了,它还会继续循环。

所以我们加一个标志位,一旦没发生交换,直接提前结束。

#include int main() { int arr[] = {1, 2, 3, 4, 5}; int n = sizeof(arr) / sizeof(arr[0]); for (int i = 0; i < n - 1; i++) { int flag = 0; // 0=未交换 for (int j = 0; j < n - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; flag = 1; } } if (flag == 0) { break; // 已经有序,直接退出 } } for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; }

五、冒泡排序的时间复杂度(深度理解)

它属于简单交换类排序,适合小规模数据,不适合大数据量。

六、冒泡排序适合什么场景?C 语言入门练手数据量小的排序嵌入式简单数据处理面试、笔试基础算法题七、一句话总结冒泡排序

两两比较,大数后移,每轮确定一个最大值,优化后提前退出。

掌握它,你就真正踏入了 C 语言算法的大门。

你在学冒泡排序的时候,最容易卡壳的是哪一步?

http://www.jsqmd.com/news/663299/

相关文章:

  • 2026年4月西城区PE给水管采购决策指南:五大服务商深度解析 - 2026年企业推荐榜
  • Mermaid离线画图的隐藏技巧:如何生成完全独立、无需JS的SVG图片文件
  • 2025届最火的十大AI科研工具推荐榜单
  • Vue3实战:从零封装一个支持行号、复制与主题切换的代码高亮组件
  • 零知识证明在数据交易中的应用:基于FISCO BCOS与Go语言的实战探索
  • Shopee商品数据API解析与Java实现
  • 告别SendKeys!用DD驱动级模拟在Windows 10/11上实现真·后台键鼠操作(Python实战)
  • 3D感知(15)Focal Sparse Conv深度解析:如何让稀疏卷积学会“聚焦”关键区域
  • 终极京东抢购神器:JDspyder自动化脚本完整使用指南
  • 从零到一:在VS Code中搭建PlatformIO Arduino开发环境的避坑实践
  • 2026年4月新发布:房山旅游车服务口碑榜深度解析与五强推荐 - 2026年企业推荐榜
  • 高通HQX双系统黑屏别慌!手把手教你用adb和screencmd抓取关键log(附QNX截图命令)
  • 实战解析:微信小程序MQTT真机调试避坑指南与代码适配
  • 测试工程师:OpenClaw自动化测试脚本生成,批量执行测试用例
  • 全平台资源捕获神器:res-downloader新手到高手完全指南
  • 5年后将淘汰C语言 微软澄清:不会用AI重写Win11系统
  • 2026年最新河北高岭土实力厂家推荐:聚焦光辉实业的专业与可靠 - 2026年企业推荐榜
  • 2026年4月更新:碳化钨耐磨焊丝定制如何选?五家实力服务商深度解析 - 2026年企业推荐榜
  • 2025届学术党必备的五大降AI率神器横评
  • 三大Linux系统终极对决
  • 2026年4月浙江企业代理记账服务深度评估:泓远财务为何成为优选? - 2026年企业推荐榜
  • 2026年通州商务车租赁服务深度解析:为何北京益嘉通汽车租赁有限公司成为企业首选? - 2026年企业推荐榜
  • GD32F303硬件SPI+DMA驱动屏幕失败?手把手教你用逻辑分析仪抓波形找原因
  • 2026年4月山东毛巾被品牌深度测评:维泰纺织如何以品质突围 - 2026年企业推荐榜
  • OBS多路RTMP推流插件:3分钟实现多平台直播的技术方案
  • Switch第三方控制器终极指南:3步解锁全平台手柄支持
  • 【智能车】OTSU大津法:从数学原理到嵌入式C语言实战
  • 2026年Q2雄安铸铜雕塑采购决策:为何河北盛鼎雕塑成为战略级合作伙伴的首选 - 2026年企业推荐榜
  • 自动化部署实践
  • 为什么Top 5 IDE厂商2024 Q2集体升级“生成式推荐”?3个被忽略的实时反馈闭环设计,让推荐不再“猜”,而能“推演”