当前位置: 首页 > web >正文

冒泡排序算法

冒泡排序算法
冒泡排序是一种简单直观的排序算法。它通过重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就交换位置。每一轮遍历都会使得当前未排序部分的最大元素"浮"到数列的末端。

算法步骤如下:

  1. 比较相邻元素,如果前一个比后一个大,就交换它们
  2. 对每一对相邻元素重复上述操作,直到数列末尾
  3. 重复上述过程,每次遍历的元素数量减一(因为末尾已排序)
  4. 直到没有元素需要比较时,排序完成

该算法的时间复杂度为O(n²),在最坏情况下需要进行n(n-1)/2次比较。虽然效率不高,但由于实现简单,常被用于教学和简单场景。优化版本可以通过设置标志位来提前终止排序过程。冒泡排序是一种简单直观的排序算法。它通过重复地遍历待排序的数列,依次比较相邻的两个元素,如果它们的顺序错误就交换位置。每一轮遍历都会使得当前未排序部分的最大元素"浮"到数列的末端。

算法步骤如下:

  1. 比较相邻元素,如果前一个比后一个大,就交换它们
  2. 对每一对相邻元素重复上述操作,直到数列末尾
  3. 重复上述过程,每次遍历的元素数量减一(因为末尾已排序)
  4. 直到没有元素需要比较时,排序完成

该算法的时间复杂度为O(n²),在最坏情况下需要进行n(n-1)/2次比较。虽然效率不高,但由于实现简单,常被用于教学和简单场景。优化版本可以通过设置标志位来提前终止排序过程。
个人学习记录一下,以免忘记

bool isSort = false;    
for (int m = 0; m < ints.Length; m++)  // 外层循环控制排序趟数
{isSort = false;     // 每趟排序开始前,假设没有交换for (int n = 0; n < ints.Length-1-m; n++)    // 内层循环控制每一趟排序多少次,-m是为了避免重复比较{if (ints[n] > ints[n + 1]){isSort = true; // 假设有交换int temp = ints[n];     // 建立中介值,交换两个元素ints[n] = ints[n + 1];ints[n + 1] = temp;}}if (!isSort)    // 如果假设没有交换,则说明排序完成{for (int i = 0; i < ints.Length; i++){Debug.Log(ints[i]);}break; // 如果没有交换,说明已经排序完成,提前退出循环}
}
http://www.xdnf.cn/news/16673.html

相关文章:

  • Java中什么是类加载?类加载的过程?
  • bash变量名不能有连字符
  • 【Redis实现基础的分布式锁及Lua脚本说明】
  • 爬虫逆向之瑞数五案例:某某医学院(补环境,联调)
  • Makefile 快速入门指南
  • 嵌入式第十四课!!!指针在字符数组的应用与数组指针
  • JavaWeb 入门:CSS 基础与实战详解(Java 开发者视角)
  • DataParallel (DP) DistributedDataParallel (DDP)
  • JavaWeb学习打卡18(JDBC案例详解)
  • [leetcode] 电话号码的排列组合
  • CSRF漏洞原理
  • CentOS7 安装和配置教程
  • USRP X410 X440 5G及未来通信技术的非地面网络(NTN)
  • Matplotlib(三)- 图表辅助元素
  • 经典算法题解析:从思路到实现,掌握核心编程思维
  • 天学网面试总结 —— 前端开发岗
  • Go 语言-->指针
  • 【2025/07/28】GitHub 今日热门项目
  • 【服务器知识】nginx配置ipv6支持
  • 大模型的开发应用(十九):AIGC基础
  • 【Spring WebFlux】 三、响应式流规范与实战
  • Java 笔记 serialVersionUID
  • ADB+Python控制(有线/无线) Scrcpy+按键映射(推荐)
  • 服务器查日志太慢,试试grep组合拳
  • 时序数据库选型指南:工业大数据场景下基于Apache IoTDB技术价值与实践路径
  • 5 分钟上手 Firecrawl
  • 【办公类-109-01】20250728托小班新生挂牌(学号姓名)
  • API产品升级丨全知科技发布「知影-API风险监测平台」:以AI重构企业数据接口安全治理新范式
  • 企业级日志分析系统ELK
  • Pycaita二次开发基础代码解析:点距测量、对象层级关系与选择机制深度剖析