冒泡排序是C++入门必学的排序算法,通过重复遍历数组、两两比较并交换相邻元素,使较大元素逐轮“浮”至末尾,实现升序排列;支持模板泛化,时间复杂度最坏O(n²),最好O(n),稳定且空间复杂度为O(1)。
冒泡排序是C++入门必学的排序算法,原理简单、逻辑清晰,适合理解排序的基本思想。它通过重复遍历待排序数组,比较相邻元素并交换位置,让较大(或较小)的元素像气泡一样逐渐“浮”到一端。
每一轮遍历中,从第一个元素开始,依次比较相邻两个数;如果顺序错误(比如升序时前一个比后一个大),就交换它们。这样每轮结束,当前未排序部分的最大值就会被“冒泡”到末尾。重复这个过程,直到没有交换发生,说明已排好序。
以下是一个标准、易懂的C++实现:
// 冒泡排序函数(升序)
void bubbleSort(int arr[], int n) {
for (int i = 0; i bool swapped = false;
// 优化:记录是否发生交换
for (int j = 0; j if (arr[j] > arr[j + 1]) {
std::swap(arr[j], arr[j + 1]);
swapped = true;
}
}
if (!swapped) break; // 提前退出:已有序
}
}
n - 1 - i,因为每轮后末尾 i 个元素已就位,无需再比swapped 标志,若某轮无交换,说明整体已有序,直接退出用模板泛化,让函数能处理 double、string 或自定义类(需支持 ):
template
void bubbleSort(T arr[], int n) {
for (int i = 0; i bool swapped = false;
for (int j = 0; j if (arr[j] > arr[j + 1]) {
std::swap(arr[j], arr[j + 1]);
swapped = true;
}
}
if (!swapped) break;
}
}
基本上就这些。掌握冒泡排序,不单是为了排序本身,更是为理解后续快排、归并等算法打下逻辑基础。
# app
# c++
# 排序算法
# 排列
# 冒泡排序
# String
# if
# for
# break
# bool
# int
# double
# void
# 循环
# 数据结构
# 算法
# 升序
# 遍历
# 最坏
# 是一个
# 就会
# 第一个
# 自定义
# 较小
# 是为了
# arr
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Windows如何设置登录时的欢迎屏幕背景?(锁屏界面)
Win11怎么设置默认浏览器Chrome_Windows11修改默认网页打开方式
如何提升Golang程序I/O性能_Golang I/O密集型程序优化示例
php怎么下载安装后测试是否成功_简单脚本验证方法【操作】
Win11怎样安装网易云音乐_Win11安装网易云教程【步骤】
Win11右键反应慢怎么办 Win11优化右键菜单加载速度【技巧】
Windows Defender扫描失败怎么办_安全模块损坏修复方式
如何在Mac上搭建Golang开发环境_使用Homebrew安装和管理Go版本
Python文件操作优化_大文件与流处理解析【教程】
如何使用Golang搭建本地API测试环境_快速验证接口功能
Windows11怎么自定义任务栏_Windows11任务栏自定义教程【步骤】
Win11如何设置开机自动联网 Win11宽带连接自动拨号【步骤】
Python网页解析流程_html结构说明【指导】
Go 中实现 Python urllib.quote() 等效功能的正确方式
Win11怎么设置桌面图标间距_Windows11注册表IconSpacing修改
Win11怎么开启专注模式_Windows11时钟应用Focus Session
如何在Golang中指定模块版本_使用go.mod控制版本号
Win10怎么卸载爱奇艺_Win10彻底卸载爱奇艺方法【步骤】
Windows10如何更改日期格式_Win10区域设置短日期修改
Win11怎么设置ipv4地址_Windows 11固定静态IP地址配置教程【详解】
Python函数参数高级用法_默认值与可变参数解析【教程】
如何在Golang中定义接口_抽象方法和多态实现
php订单日志怎么记录评价_php记录订单评价日志方法【方法】
c++中如何进行二进制文件读写_c++ read与write函数用法
Win11任务栏天气怎么关闭 Win11隐藏天气小组件图标【设置】
Windows10如何更改任务栏高度_Win10解除锁定调整大小
Win10怎样卸载iTunes_Win10卸载iTunes步骤【步骤】
Win11怎么设置默认邮件应用_Windows11应用关联Mail设置
Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】
Python对象生命周期管理_创建销毁说明【指导】
如何在 PHP 单元测试中正确模拟带方法的图像处理门面(Facade)
Win11怎么开启空间音效_Windows11耳机杜比音效与Sonic设置
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
Windows蓝屏错误0x00000023怎么修复_FAT文件系统错误处理
如何在Golang中写入XML文件_生成符合规范的XML数据
Win11怎么关闭系统推荐内容_Windows11开始菜单布局设置
Python数据挖掘进阶教程_分类回归与聚类案例解析
Python爬虫项目实战教程_Scrapy抓取与存储数据实例
Windows10系统怎么查看显卡驱动_Win10设备管理器驱动更新
Win11相机打不开提示错误怎么修_相机权限开启与驱动修复【影像修复】
Win11怎么设置夜间模式_Windows11显示设置蓝光过滤强度
Python包结构设计_大型项目组织解析【指导】
php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】
php怎么操作Redis_Redis扩展连接与基本命令使用方法【方法】
phpstudy本地环境mysql忘记密码_重置mysqlroot密码操作流程【解答】
Win10如何卸载WindowsDefender_Win10卸载Defender教程【方法】
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
手机php文件怎么变成mp4_安卓苹果打开php转mp4方法【教程】
c++中的std::conjunction和std::disjunction是什么_c++模板元编程逻辑运算【C++17】
Win11如何隐藏桌面图标 Win11一键隐藏/显示桌面图标【指南】
2025-12-26
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。