c++ 冒泡排序代码 c++冒泡排序算法教程


冒泡排序通过重复比较相邻元素并交换位置,使较大元素逐步“浮”至末尾,实现数组排序。1. 从第一个元素开始,比较相邻两元素,若顺序错误则交换;2. 每轮遍历后最大元素移至末尾;3. 对前n-1个元素重复操作直至有序。C++实现中采用swapped标志位优化,若某轮无交换则提前结束。时间复杂度最坏为O(n²),最好为O(n),空间复杂度O(1),是稳定排序算法,适合教学演示。

冒泡排序是一种简单直观的排序算法,适合初学者理解排序的基本逻辑。它的核心思想是重复遍历数组,比较相邻元素,如果顺序错误就交换它们。经过多轮遍历,较大的元素会像“气泡”一样逐渐“浮”到数组末尾。

冒泡排序基本原理

假设有 n 个元素的数组:

  • 从第一个元素开始,比较相邻两个元素的大小
  • 如果前面的元素比后面的大,就交换它们的位置
  • 一轮遍历后,最大的元素会移动到数组末尾
  • 对前 n-1 个元素重复上述过程,直到整个数组有序

C++ 实现代码示例

以下是一个完整的 C++ 冒泡排序实现:

#include 
using 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;

}

算法特点与优化说明

冒泡排序虽然效率不高,但易于理解和实现:

  • 时间复杂度:最坏和平均情况为 O(n²),最好情况(已排序)可优化到 O(n)
  • 空间复杂度:O(1),只使用常数额外空间
  • 稳定性:是稳定排序,相等元素的相对位置不会改变
  • 代码中使用了 swapped 标志位进行优化,若某轮无交换,立即结束

基本上就这些。冒泡排序适合小规模数据或教学演示,实际开发中更推荐使用快速排序或 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

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

致胜网络推广营销网


致胜网络推广营销网

致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。

 915688610

 17370845950

 915688610@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.