首页/新闻资讯/正文详情

冒泡排序:相邻元素两两比较

发布时间:2026/9/26 6:06:56 来源:云帆数科 栏目:资讯中心
冒泡排序:相邻元素两两比较
冒泡排序相邻元素两两比较软考程序员考试中冒泡排序是排序算法章节的必考内容。今天我们就来聊聊这个最温柔的排序算法——它每次只敢和邻居比一比。一、为什么叫冒泡想象一锅烧开了的水底部的气泡一点点往上冒。大的气泡跑得快先冒到水面小的气泡慢慢悠悠后上来。冒泡排序的原理一模一样每一轮从第一个元素开始相邻的两个元素两两比较。如果前面的比后面的大升序情况就交换它们的位置。一轮下来最大的那个元素就像最大的气泡一样冒到了最后面。二、具体怎么操作来看一个例子假设要对[5, 3, 8, 1, 2]进行升序排序第一轮5 和 3 比5 3交换 →[3, 5, 8, 1, 2]5 和 8 比5 8不交换 →[3, 5, 8, 1, 2]8 和 1 比8 1交换 →[3, 5, 1, 8, 2]8 和 2 比8 2交换 →[3, 5, 1, 2, 8]第一轮结束8 已经冒到了最后面。第二轮3 和 5 比不交换5 和 1 比交换 →[3, 1, 5, 2, 8]5 和 2 比交换 →[3, 1, 2, 5, 8]第二轮结束5 也到位了。依次类推经过 n-1 轮整个序列就排好了。三、代码怎么写用伪代码表示for i 0 to n-1: for j 0 to n-1-i: if arr[j] arr[j1]: swap(arr[j], arr[j1])注意内层循环的范围是n-1-i因为每轮结束后最后 i 个元素已经排好序了不需要再比较。四、优化提前结束有个聪明的优化思路如果某一轮比较下来一次交换都没有发生说明序列已经有序了还比什么直接结束怎么实现加一个标志位swapped每轮开始时设为 false发生交换时设为 true。一轮结束后如果 swapped 还是 false就 break。for i 0 to n-1: swapped false for j 0 to n-1-i: if arr[j] arr[j1]: swap(arr[j], arr[j1]) swapped true if swapped false: break这个优化在最好情况已经有序下时间复杂度能从 O(n²) 降到 O(n)。五、性能分析情况时间复杂度说明最好情况O(n)已经有序一轮比较就结束最坏情况O(n²)完全逆序每轮都要交换平均情况O(n²)大致是 n²/4 次交换空间复杂度O(1)只需要一个临时变量用于交换是原地排序。稳定性稳定。相等的元素不会交换位置所以相同元素的相对顺序不变。六、软考常考点考点1冒泡排序的比较次数最好情况n-1 次比较最坏情况n(n-1)/2 次比较考点2冒泡排序的交换次数最好情况0 次已经有序最坏情况n(n-1)/2 次完全逆序考点3稳定性判断冒泡排序是稳定的排序算法因为相邻元素相等时不交换。考点4优化后的最好情况加了 swapped 标志后最好情况时间复杂度为 O(n)。软考小贴士冒泡排序虽然效率不高但胜在简单易懂。考试中常考它的比较次数、交换次数的计算以及稳定性的判断。记住它是稳定的、原地的、时间复杂度 O(n²) 的排序。一句话记住冒泡排序就像水中气泡大的慢慢浮上去每轮把一个最大元素送到末尾。互动时间你觉得冒泡排序在实际开发中还有用武之地吗什么场景下用它反而合适评论区聊聊你的看法觉得这篇讲清楚了点个赞收藏起来转发给正在备考软考的朋友吧关注「通俗易懂学IT」我们一起把计算机知识学透想系统备考软考程序员加入我们的知识星球获取完整备考资料、真题解析、学习打卡助你一次通关

相关推荐

Claude Code模板实战:搭建高效AI编程助手的完整指南
Claude Code模板实战:搭建高效AI编程助手的完整指南

1. 为什么我掏空一个仓库专门收集Claude Code模板先说背景。最近小半年我一直在重度使用Claude Code这个终端AI编程工具,从最初当个"高级Copilot"随便问两句,到后来发现它能直接读仓库、改文件、跑命令、提交代码,整个工作流都被重… · 2026/9/26 6:06:56

WorkBuddy零基础AI漫剧实战:不吃配置的自动化工作流搭建指南
WorkBuddy零基础AI漫剧实战:不吃配置的自动化工作流搭建指南

1. 先搞清楚WorkBuddy到底是个什么东西很多人第一次听到WorkBuddy这个名字,第一反应是"又一个AI工具",然后下意识觉得这东西肯定要联网、要账号、要付费、要高性能显卡。我一开始也是这么想的,直到真正把它跑起来才发现&#xff0c… · 2026/9/26 6:06:56

ForgetMimic:人形机器人动作遗忘式控制方法
ForgetMimic:人形机器人动作遗忘式控制方法

1. 项目概述:当机器人开始“忘记”走路,反而走得更稳了最近在强化学习控制领域,一个叫ForgetMimic的新方法突然被不少实验室反复提起——它不是教人形机器人怎么学走路,而是教它有选择地忘掉某些动作模式。这听起来反直觉&#xf… · 2026/9/26 6:06:50

SpringBoot+Vue全栈就业管理系统:从数据库设计到部署实战
SpringBoot+Vue全栈就业管理系统:从数据库设计到部署实战

每年毕业季,办公室最热闹的业务系统就是就业管理。岗位信息要汇总、投递记录要跟踪、企业数据要审核、简历要反复筛选,靠着Excel和微信群来回倒腾,信息一乱就全乱了。所以当我决定自己动手写一套Web就业管理系统时,心里很清楚&… · 2026/9/26 6:35:06

RL-赵-(八)-ValueBased01-StateValue估算:TD函数逼近算法01【用函数拟合v、q值取代之前的“表格”形式】【函数可用于处理连续v/q空间,存储空间小泛化能力强】
RL-赵-(八)-ValueBased01-StateValue估算:TD函数逼近算法01【用函数拟合v、q值取代之前的“表格”形式】【函数可用于处理连续v/q空间,存储空间小泛化能力强】

一、Motivating examples: 曲线拟合curve fitting 到目前为止,我们都是使用tables表示state values和action values。例如,下表是action value的表示: 在编程的时候我们实际上就把这些表格重组成向量矩阵或者是数组,我使用表格的好处是什么呢?就是它是非常的直观, 然后我… · 2026/9/26 6:35:06

用Python和Twilio构建高可靠短信通知系统:从验证码到生产级实践
用Python和Twilio构建高可靠短信通知系统:从验证码到生产级实践

去年我给一个内部系统加监控报警时,最先想到的是在群里发消息。结果报警频率一高,群里全是机器人刷屏,值班的同事直接把群消息屏蔽了。后来换成邮件,邮件又进了垃圾箱,或者常规延迟二十分钟——等看到邮件,… · 2026/9/26 6:35:06

鸿蒙Flutter适配实战:stream_iterable连接同步集合与异步流
鸿蒙Flutter适配实战:stream_iterable连接同步集合与异步流

先把一个最常见的场景抛出来:你在鸿蒙设备上跑 Flutter 应用,业务方要求一次性从数据库捞几千条记录,每条还要做格式化、过滤、去重,最终逐条驱动界面刷新。如果用for循环同步处理,UI 直接卡到让人怀疑人生&#xff1b… · 2026/9/26 6:35:06

RL-赵-(八)-ValueBased03-ActionValue估算:Q-learning函数逼近算法【目标:计算出最优“值函数”参数,通过该“值函数”计算出的Action Value最优】
RL-赵-(八)-ValueBased03-ActionValue估算:Q-learning函数逼近算法【目标:计算出最优“值函数”参数,通过该“值函数”计算出的Action Value最优】

我们知道: “TD learning” with “value function approximate”: w t + 1 = w t + α t [ r t + 1 + γ v ^ ( s t + 1 , w t ) − v ^ ( s t , w t ) ] ∇ w v ^ ( s t , w t ) \color{red}{w_{t+1}=w_t+\alpha_t\left[r_{t+1}+\gamma\hat{v}(s_{t+1},w_t)-\hat{v}(s_t,w… · 2026/9/26 6:35:06

基于Pywinauto实现简陋微信朋友圈爬虫
基于Pywinauto实现简陋微信朋友圈爬虫

前些天发现了一个人工智能学习网站,向大家分享一下。网站链接:前言 – 人工智能学习网 Python读取微信朋友圈_微信强制访问朋友圈代码-CSDN博客https://blog.csdn.net/oldmao_2001/article/details/119787392参考这位博主的工作,我进一步更新… · 2026/9/26 6:35:00

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码