冒泡排序通过重复比较相邻元素并交换位置,使较大元素逐步“浮”至末尾,实现数组排序。1. 从第一个元素开始,比较相邻两元素,若顺序错误则交换;2. 每轮遍历后最大元素移至末尾;3. 对前n-1个元素重复操作直至有序。C++实现中采用swapped标志位优化,若某轮无交换则提前结束。时间复杂度最坏为O(n²),最好为O(n),空间复杂度O(1),是稳定排序算法,适合教学演示。
冒泡排序是一种简单直观的排序算法,适合初学者理解排序的基本逻辑。它的核心思想是重复遍历数组,比较相邻元素,如果顺序错误就交换它们。经过多轮遍历,较大的元素会像“气泡”一样逐渐“浮”到数组末尾。
假设有 n 个元素的数组:
以下是一个完整的 C++ 冒泡排序实现:
#includeusing namespace std; void bubbleSort(int arr[], int n) { for (int i = 0; i < n - 1; i++) { // 标记是否发生交换,用于优化 bool swapped = false; for (int j = 0; j < n - i - 1; j++) { if (arr[j] > arr[j + 1]) { // 交换相邻元素 int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; swapped = true; } } // 如果没有发生交换,说明数组已经有序 if (!swapped) break; } }
// 打印数组 void printArray(int arr[],
int n) { for (int i = 0; i < n; i++) { cout << arr[i] << " "; } cout << endl; }
// 示例使用 int main() { int arr[] = {64, 34, 25, 12, 22, 11, 90}; int n = sizeof(arr) / sizeof(arr[0]);
cout zuojiankuohaophpcnzuojiankuohaophpcn "原始数组: "; printArray(arr, n); bubbleSort(arr, n); cout zuojiankuohaophpcnzuojiankuohaophpcn "排序后数组: "; printArray(arr, n); return 0;}
冒泡排序虽然效率不高,但易于理解和实现:
基本上就这些。冒泡排序适合小规模数据或教学演示,实际开发中更推荐使用快速排序或 std::sort。
# app
# ai
# c++
# ios
# stream
# 排序算法
# 冒泡排序
# sort
# 快速排序
# 算法
# 遍历
# 第一个
# 最坏
# 是一个
# 是一种
# 推荐使用
# 如果没有
# 不高
# 会像
# 基本原理
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Go语言中CookieJar的持久化机制解析:内存存储与自定义持久化方案
Win11笔记本怎么看电池健康度_Win11电池报告生成命令【详解】
Mac如何使用听写功能_Mac语音输入打字【效率技巧】
Win11开始菜单打不开_修复Windows 11点击开始图标无响应【教程】
Win11怎么关闭防火墙通知_屏蔽Win11安全中心安全警告弹窗【技巧】
c++中的可变参数模板(variadic templates)怎么用_c++模板编程黑魔法【C++11】
如何解决Windows字体显示模糊的问题?(ClearType设置)
Win11怎么关闭任务栏小组件_Windows11隐藏任务栏天气图标
网站体验不好=浪费钱:如何提升-用户体验效果差
Windows如何设置登录时的欢迎屏幕背景?(锁屏界面)
如何在Golang中捕获HTTP服务器错误_GolangHTTP Handler中error处理
Win11怎么关闭触摸屏_禁用Win11笔记本触摸屏功能设置【教程】
如何用列表一次性对 DataFrame 的指定列应用字典映射
如何使用Golang处理网络超时错误_Golang请求超时异常处理方法
如何高效删除 NumPy 二维数组中所有元素相同的列
Win11如何暂停系统更新 Win11暂停更新最长时限设置【步骤】
php在Linux怎么部署_LNMP环境搭建PHP服务的详细指南【指南】
Win11怎么调整屏幕亮度_Windows 11调节显示器亮度护眼设置【步骤】
如何在Golang中处理云原生事件_使用Event和Notification机制
Windows11怎么自定义任务栏_Windows11任务栏自定义教程【步骤】
PHP 中如何在函数内持久修改引用变量所指向的目标
Win11输入法选字框不见了怎么办_Win11输入法修复与重置【教程】
Win11怎么更改系统语言为中文_Windows11安装语言包并设为显示语言
Win11怎么更改计算机名_Windows11系统信息重命名设备教程
如何使用Golang实现RPC序列化与反序列化_Golang RPC数据编码与解码方法
Windows 11怎么设置默认解压软件_Windows 11为ZIP/RAR文件指定默认打开程序
Mac电脑如何恢复出厂设置_Mac抹掉数据并重装系统【安全指南】
如何提升Golang程序I/O性能_Golang I/O密集型程序优化示例
Python异步编程高级项目教程_asyncio协程任务管理实战
如何在 Go 开发中正确处理本地包导入与远程模块路径的一致性问题
如何使用正则表达式批量替换重复的星号-短横模式为固定字符串
php删除数据怎么加限制_带where条件删除避免全删【指南】
c# 如何深拷贝和浅拷贝
PHP主流架构怎么集成Redis缓存_配置步骤【方法】
Win11怎么设置快速访问主页_Windows11资源管理器文件夹选项
Win11玩游戏全屏闪退怎么办_Win11全屏优化禁用设置【教程】
如何在Golang中处理数据库事务错误_回滚和日志记录
Win10如何卸载自带Edge_Win10彻底卸载Edge浏览器教程【攻略】
Mac如何将HEIC图片格式转为JPG_Mac批量转换图片【指南】
Win11怎么设置默认视频播放器_Windows 11关联媒体文件打开方式【步骤】
Win11如何设置系统声音_Win11系统声音调整教程【攻略】
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
Win11怎么激活Windows10_Win11激活Win10系统方法【步骤】
Win11局域网共享怎么设置 Win11文件夹网络共享教程【详解】
Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】
Win11怎么修复系统文件_使用sfc命令修复Win11系统【技巧】
Windows怎样关闭桌面弹窗广告_Windows关闭桌面弹窗设置【教程】
如何在Golang中写入JSON文件_保存结构体数据到文件
Win11任务栏怎么固定应用 Win11将软件图标固定到底部【步骤】
如何使用Golang实现微服务事件驱动_使用消息总线解耦服务
2025-12-05
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。