news 2026/5/11 0:23:49

冒泡排序:原理与优化全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
冒泡排序:原理与优化全解析

一、核心原理

重复相邻元素两两比较,若逆序则交换;每一轮把当前最大元素冒泡到末尾,像气泡往上浮。每一轮确定一个末尾有序元素,下一轮只需比较前面无序部分。

二、算法特点

  1. 稳定排序:相等元素相对位置不变
  2. 原地排序:只常数级额外空间
  3. 最好时间复杂度:O(n)(优化版,已有序)
  4. 最坏 / 平均复杂度:O(n2)
  5. 空间复杂度:O(1)

三、普通版冒泡排序思路

  1. 外层循环:控制排序轮数,共n-1
  2. 内层循环:每轮比较0 ~ n-1-i相邻元素
  3. 前 > 后 就交换

四、优化版思路

设置标记位,若某一轮没有发生任何交换,说明数组已有序,直接提前退出。


C++ 源代码

1. 基础版 冒泡排序

cpp

运行

#include <iostream> #include <vector> using namespace std; // 基础冒泡排序 void bubbleSort(vector<int>& arr) { int n = arr.size(); // 共 n-1 轮 for (int i = 0; i < n - 1; ++i) { // 每轮比较到 n-1-i for (int j = 0; j < n - 1 - i; ++j) { if (arr[j] > arr[j + 1]) { // 交换 swap(arr[j], arr[j + 1]); } } } } int main() { vector<int> a = {5, 2, 9, 1, 5, 6}; bubbleSort(a); for (int x : a) cout << x << " "; return 0; }

2. 优化版(带有序标记)

cpp

运行

#include <iostream> #include <vector> using namespace std; // 优化冒泡排序:已有序直接提前结束 void bubbleSortOpt(vector<int>& arr) { int n = arr.size(); for (int i = 0; i < n - 1; ++i) { bool isSorted = true; // 标记是否已有序 for (int j = 0; j < n - 1 - i; ++j) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); isSorted = false; } } if (isSorted) break; // 无交换,直接退出 } } int main() { vector<int> a = {1, 2, 3, 4, 5}; bubbleSortOpt(a); for (int x : a) cout << x << " "; return 0; }

五、关键知识点总结

  1. 轮数:最多n-1
  2. 每轮结束后,末尾 i 个元素已有序,无需再比较
  3. 优化核心:标志位减少不必要循环
  4. 适用场景:数据量很小、几乎接近有序的场景
  5. 不适合:大数据量排序,平方级复杂度效率太低
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 0:23:48

选择排序:原理、特点与实现详解

选择排序 一、核心原理每一轮从未排序区间找到最小值&#xff08;或最大值&#xff09;&#xff0c;和未排序区间第一个元素交换&#xff1b;划分&#xff1a;已排序区间 | 未排序区间&#xff0c;逐步扩大左边有序区间。二、算法复杂度时间复杂度&#xff1a;最好 / 最坏 / 平…

作者头像 李华
网站建设 2026/5/11 0:20:20

量子计算串扰问题与优化控制技术解析

1. 量子计算中的串扰问题与优化控制技术概述在量子计算硬件中&#xff0c;串扰&#xff08;Crosstalk&#xff09;是影响量子门操作精度的主要噪声源之一。当多个量子比特并行操作时&#xff0c;一个量子比特的控制脉冲会意外影响邻近量子比特的状态&#xff0c;这种现象在超导…

作者头像 李华
网站建设 2026/5/11 0:19:49

数据驱动天气预报模型的扩展规律与优化策略

1. 数据驱动天气预报模型的扩展规律研究天气预报正经历一场由数据驱动模型引领的革命。传统数值天气预报依赖于基于物理的偏微分方程模拟&#xff0c;而新一代机器学习模型正在改写游戏规则。作为一名长期跟踪气象AI技术发展的从业者&#xff0c;我见证了GraphCast、Pangu等模型…

作者头像 李华
网站建设 2026/5/11 0:19:47

ComfyUI-VideoHelperSuite终极实战:AI视频合成的完整解决方案

ComfyUI-VideoHelperSuite终极实战&#xff1a;AI视频合成的完整解决方案 【免费下载链接】ComfyUI-VideoHelperSuite Nodes related to video workflows 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-VideoHelperSuite 在AI视频创作领域&#xff0c;将图像序列…

作者头像 李华