【排序】——1.冒泡排序法(含优化)

在这里插入图片描述

冒泡排序

在这里插入图片描述

1.原理

左边大于右边交换一趟排下来最大的交换到右边来(接下来所以文章用升序举例)

  • 从左到右,相邻元素进行比较

  • 每次比较一轮,就会找到序列中最大的一个(最小的一个——降序)。这个数就会从序列的最右边冒出来。

  • 以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边

  • 第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。

在这里插入图片描述

2.图解

在这里插入图片描述

3.代码

代码如下:

//普通版本
void Bubble_sort1(int* arr, int size)
{for (int i = 0; i < size; i++){//开始:i=0      j<size-1(j+1才size-1,符合下标)//size-1-i是因为每一趟就会少一个数比较for (int j = 0; j < size - i - 1; j++)	//{if (arr[j] > arr[j + 1])			//前面大于后面,把大的交换到右边{int tem = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tem;}}}
}

4.优化

  • 设置flag,如果有序了,就不用往下循环了,提前退出
//优化版本
void Bubble_sort2(int* arr, int size)
{for (int i = 0; i < size; i++){int flag = 0;							//默认有序for (int j = 0; j < size - i - 1; j++)	size-1-i是因为每一趟就会少一个数比较{if (arr[j] > arr[j + 1])			//前面大于后面,把大的交换到右边{int tem = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tem;//发生交换,说明无序flag = 1;}}//如果前面都没有发生交换,说明已经有序了if (flag == 0){break;			//不用继续了,已经有序,提前退出}}
}

我给这个案例测试:
1 2 3 4 5 6 7 9 8 就9和8没有升序

普通版本
在这里插入图片描述
优化版本
在这里插入图片描述
显然速度稍微得到提升!

5.时空复杂度

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/55255.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法时间、空间复杂度(二)

目录 大O渐进表示法 一、时间复杂度量级的判断 定义&#xff1a; 例一&#xff1a;执行2*N&#xff0b;1次 例二&#xff1a;执行MN次 例三&#xff1a;执行已知次数 例四:存在最好情况和最坏情况 顺序查找 冒泡排序 二分查找 例五&#xff1a;阶乘递归 ​编辑 例…

JIT详解

文章目录 JIT为什么说 Java 语言“编译与解释并存”&#xff1f; JIT原理JVM 架构简览JIT 编译流程JIT 编译器的实现优化策略方法内联逃逸分析 JIT 在Java中&#xff0c;JIT&#xff08;Just-In-Time&#xff09;编译器是Java虚拟机&#xff08;JVM&#xff09;的一个重要组成…

韩国 NEL动物医疗中心:犬二尖瓣修复术连获成功

“守护心脏的神之手” 在小型犬心脏疾病根本治疗&#xff08;犬心脏修复手术&#xff09;方面取得重大突破&#xff0c;已成功完成 16 例手术。 韩国 NEL动物医疗中心&#xff08;NEL ANIMAL MEDICAL CENTER&#xff09;严泰欽院长带领的心脏手术团队&#xff0c;为 16 只宠物…

自定义拦截器处理token

目录 1、WebConfig 配置类 2、TSUserContext 把用户信息放到context中 3、自定义拦截器 4、在controller中可以使用 5、参考链接 1、WebConfig 配置类 @Configuration public class WebConfig implements WebMvcConfigurer {@Autowiredprivate AccessControlInterceptor …

Lumerical学习——分析工具(Analysis tools)

一、分析工具和模拟环境&#xff08;Analysis tools and the simulation environment&#xff09; 模拟计算完成后&#xff0c;模拟计算数据紧接着写到模拟工程文件中&#xff1b;甚至当模拟计算提前结束时计算得到的部分数据集也会写到文件中。当模拟完成后单击退出按钮、或者…

【行业观察】三折机不够看?苹果研发四折叠屏iPhone

随着智能手机市场的日益成熟&#xff0c;消费者对手机形态和功能的需求也在不断升级。近年来&#xff0c;折叠屏手机凭借其独特的形态和更大的显示面积&#xff0c;成为了市场的新宠。而在这场折叠屏手机的竞争中&#xff0c;苹果作为智能手机行业的领头羊&#xff0c;自然也不…

Visual Studio 2022常用快捷键

1. 基本编辑快捷键 Ctrl X&#xff1a;剪切选中内容Ctrl C&#xff1a;复制选中内容Ctrl V&#xff1a;粘贴内容Ctrl Z&#xff1a;撤销Ctrl Y&#xff1a;重做Ctrl Shift L&#xff1a;删除当前行Ctrl K, Ctrl C&#xff1a;注释选中的代码Ctrl K, Ctrl U&#xf…

关于 FusionPBX

对于 FusionPBX&#xff0c;我了解不多&#xff0c;国内有人用&#xff0c;但不多 关于 iso 安装 找了一圈&#xff0c;只找到一个 2022年 的版本&#xff0c;链接为&#xff1a; https://master.dl.sourceforge.net/project/fusionpbx-live-medium/fusionpbx-embedded-2020…

Jmeter脚本录制、Badboy脚本录制

目录 Jmeter脚本录制 Badboy脚本录制 Jmeter脚本录制 1、首先添加一个http测试脚本记录器 2、选择目标控制器&#xff0c;把录制的内容放到的地方 3、分组&#xff0c;就是在录制的时候&#xff0c;每一步操作之间间隔方式&#xff0c;根据自己需要进行选择 4、开启浏览…

安全光幕的工作原理及应用场景

安全光幕是一种利用光电传感技术来检测和响应危险情况的先进设备。其工作原理基于红外线传感器&#xff0c;通过发射红外光束并接收反射或透射光束来形成一道无形的屏障。以下是对安全光幕工作原理和应用场景的介绍&#xff1a; 工作原理 发射器与接收器&#xff1a;安全光幕通…

mermaid 图表相关

1.mermaid图表的代码 1.1 flowchart 流程图代码 flowchart TDA[Christmas] -->|Get money| B(Go shopping)B --> C{Let me think}C -->|One| D[Laptop]C -->|Two| E[iPhone]C -->|Three| F[fa:fa-car Car]1.2 sequece 时序图代码 sequenceDiagramAlice->&…

AI开发-三方库-Hugging Face-Pipelines

1 需求 需求1&#xff1a;pipeline支持的任务类型 需求2&#xff1a;推理加速使用CPU还是GPU 需求3&#xff1a;基于pipeline的文本分类示例 需求4&#xff1a;pipeline实现原理 模型使用步骤&#xff08;Raw text -》Input IDs -》Logits -》Predictions&#xff09;&…

跨域问题及常用的5种解决方案

1.什么是跨域问题&#xff1f; 跨域问题通常指的是在浏览器中由于同源策略的限制而产生的问题。同源策略&#xff08;Same-origin policy&#xff09;是浏览器的一种安全措施&#xff0c;它要求请求的域名、协议和端口必须与提供资源的网站相同。当一个网页尝试访问另一个来源…

基于SpringBoot+Vue+uniapp的在线招聘平台的详细设计和实现

详细视频演示 请联系我获取更详细的演示视频 项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念&#xff0c;提供了一套默认的配置&#xff0c;让开发者可以更专注于业务逻辑而不…

图论day62|拓扑排序理论基础、117.软件构建(卡码网)、最短路径之dijkstra理论基、47.参加科学大会(卡码网 第六期模拟笔试)

图论day62|拓扑排序理论基础、117.软件构建&#xff08;卡码网&#xff09;、最短路径之dijkstra理论基、47.参加科学大会&#xff08;卡码网 第六期模拟笔试&#xff09; 拓扑排序理论基础117.软件构建&#xff08;卡码网&#xff09;最短路径之dijkstra理论基础47.参加科学大…

IT招聘乱象的全面分析

近年来&#xff0c;IT行业的招聘要求似乎越来越苛刻&#xff0c;甚至有些不切实际。许多企业在招聘时&#xff0c;不仅要求前端工程师具备UI设计能力&#xff0c;还希望后端工程师精通K8S服务器运维&#xff0c;更有甚至希望研发经理掌握所有前后端框架和最新开发技术。这种招聘…

day-67 二叉树展开为链表

思路 深度优先遍历&#xff1a;首先将二叉树进行前序遍历&#xff0c;将每个遍历的节点存入一个链表当中 解题过程 将链表还原为只有右子树的二叉树即可 Code /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* Tr…

第16课-C++ STL 学习之【双向迭代器】(正,反向迭代器)

一、前言 在 C 的标准模板库&#xff08;STL&#xff09;中&#xff0c;迭代器是一种非常重要的概念&#xff0c;它提供了一种统一的方式来访问容器中的元素。在上一篇文章中我们学习了反向迭代器&#xff0c;它允许我们反向遍历容器。除了反向迭代器外&#xff0c;还有双向迭…

Hi3061M开发板——系统时钟频率

这里写目录标题 前言MCU时钟介绍PLLCRG_ConfigPLL时钟配置另附完整系统时钟结构图 前言 Hi3061M使用过程中&#xff0c;AD和APT输出&#xff0c;都需要考虑到时钟频率&#xff0c;特别是APT&#xff0c;关系到PWM的输出频率。于是就研究了下相关的时钟。 MCU时钟介绍 MCU共有…

认识Java的异常

异常机制 异常机制指的是程序出现错误时&#xff0c;程序的处理方式。 程序的错误分为三种&#xff1a; 编译错误&#xff1a;由于没有遵循对于语言的语法规则&#xff0c;编辑器可以自动发现并提示的错误位置和原因。逻辑错误&#xff1a;程序没有按照预期的顺序执行。运行…