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

排序之冒泡排序

冒泡排序

原始思想

bool bubble(int* arr, int lo, int hi)
{bool sorted = true;while (++lo < hi) {if (arr[lo - 1] > arr[lo]) {mySwap2(arr[lo - 1], arr[lo]);sorted = false;}}return sorted;
}
void bubbleSort(int* arr, int lo, int hi)
{while (!bubble(arr, lo, hi--));
}

[lo,hi),通过一个标志记录逆序的元素 ,该标志控制外层循环

改进

可以把原始数组看成无序的前缀和有序的后缀,一开始有序的后缀可能没有,为0,
在实际排序中可能会出现前缀有部分是有序的,不用进行排序,

int bubblePlus(int* arr, int lo, int hi)
{int last = lo;while (++lo < hi) {if (arr[lo - 1] > arr[lo]) {last = lo;mySwap2(arr[lo - 1], arr[lo]);}}return last;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 掌握构建魔法:Gradle中Groovy插件的配置秘籍
  • 深度解析 PostgreSQL Protocol v3.0(三)— 流复制(上)
  • i7-13700K负载过高时出现无故自动重启(蓝屏问题)
  • 小白的OS Copilot 产品测评
  • 微信小程序毕业设计-学习资料库系统项目开发实战(附源码+论文)
  • ETL数据集成丨主流ETL工具(ETLCloud、DataX、Kettle)数据传输性能大PK
  • 启动完 kubelet 日志显示 failed to get azure cloud in GetVolumeLimits, plugin.host: 1
  • 2024辽宁省大学数学建模竞赛试题思路
  • 什么是面向对象编程
  • MVC 控制器 中Action 不能同名,参数不一样,路由器寻找不到对应的,要加特性
  • Python-PLAXIS自动化建模技术与典型岩土工程案例
  • 新版Android Studio中设置gradle的JDK版本
  • python:在同一视窗中画出三个函数的图形
  • Linux操作系统安全分析与防护
  • 如何为IP申请SSL证书
  • JS 中的深拷贝与浅拷贝
  • 0基础学习移动端适配
  • Apache Pulsar 2.1 重磅发布
  • IOS评论框不贴底(ios12新bug)
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • PermissionScope Swift4 兼容问题
  • Python打包系统简单入门
  • Python中eval与exec的使用及区别
  • redis学习笔记(三):列表、集合、有序集合
  • SAP云平台里Global Account和Sub Account的关系
  • Shadow DOM 内部构造及如何构建独立组件
  • 从0到1:PostCSS 插件开发最佳实践
  • 汉诺塔算法
  • 开源SQL-on-Hadoop系统一览
  • 前端攻城师
  • 如何设计一个比特币钱包服务
  • 首页查询功能的一次实现过程
  • 项目管理碎碎念系列之一:干系人管理
  • linux 淘宝开源监控工具tsar
  • 第二十章:异步和文件I/O.(二十三)
  • ​水经微图Web1.5.0版即将上线
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (三)Honghu Cloud云架构一定时调度平台
  • (十八)SpringBoot之发送QQ邮件
  • (四)TensorRT | 基于 GPU 端的 Python 推理
  • (已解决)Bootstrap精美弹出框模态框modal,实现js向modal传递数据
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .mysql secret在哪_MYSQL基本操作(上)
  • .Net - 类的介绍
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @RequestBody与@RequestParam:Spring MVC中的参数接收差异解析
  • @synthesize和@dynamic分别有什么作用?
  • @WebServiceClient注解,wsdlLocation 可配置
  • [383] 赎金信 js
  • [Android]Android P(9) WIFI学习笔记 - 扫描 (1)
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [C#]C# winform部署yolov8目标检测的openvino模型