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

冒泡排序

贵阳这个地方的天气变化好大呀,前两天晒大太阳,今天就冷的脚抖,简直不要太冷,但是不管怎么样,还是要学习的哟!

冬天来了,春天确实还有一点远!

 好了,话不多说,我们来开始今天的学习。今天我们来讲冒泡排序,什么是冒泡排序呢?

冒泡排序是一种基本的排序算法,其思想是通过比较两个相邻元素的大小,将较大的元素逐渐交换到数组的最末尾。

1. 从数组的第一个元素开始,将其与相邻的元素进行比较。
2. 如果当前元素大于相邻元素,则交换它们的位置,将较大的元素移动到后面。
3. 继续比较与下一个元素,直到达到数组的末尾。
4. 重复以上步骤,每次比较的次数减少一次。
5. 重复执行上述步骤,直到所有元素都按照从小到大的顺序排序。

 那么我们现在来看看整体代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>void BubbleSort(int arr[], int sz)
{for (int i = 0; i < sz-1; i++)//趟数{for (int j = 0; j < sz - 1 - i; j++)//一趟冒泡排序{if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;}}}
}int main()
{int arr[] = { 5,7,9,4,3,6,8,1};//5 7 9 4 3 6 8 1int sz = sizeof(arr) / sizeof(arr[0]);//计算有多少个元素BubbleSort(arr,sz);for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}return 0;
}

看看运行效果:

 那么如果是以 9 1 3 4 5 6 7 8这样排序呢,我们是不是也还要进行那么多次的排序,我们是不是只用一趟排序之后就是我们希望看见的结果了,所以我们来改进一下我们的代码。我们假设flag = 1为最终排好的效果,如果进行交换了,我们就把 flag = 0,表示此时还不是我们想要的效果,还可以定义一个count来看看我们进行了多少次比较。

int count = 0;void BubbleSort(int arr[], int sz)
{for (int i = 0; i < sz; i++)//趟数{//int flag = 1;for (int j = 0; j < sz - 1 - i; j++)//一趟冒泡排序{count++;if (arr[j] > arr[j + 1]){int tmp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = tmp;//flag = 0;}}/*if (flag == 1){break;}*/}
}int main()
{int arr[] = {9,1,3,4,5,6,7,8, };//5 7 9 4 3 6 8 1int sz = sizeof(arr) / sizeof(arr[0]);BubbleSort(arr,sz);for (int i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("%d", count);return 0;
}

我们先把flag摒弃掉,看看总共比较了多少次:

 加上flag的判断后看看:

 可能有一些小伙伴有些疑惑了,为什么count放在比较的外面,而不放在if的里面,不是说比较了才加加吗?其实就是放在这里的,每一次进来都是要进行比较的,假设你上一次达到了你想要的排序,但是下一次进来还是要进行比较呀,看看要不要进行交换,如果不用交换的话,那么flag就不用变成0了,那么就可以执行到后面然后跳出循环!

好了,今天就到此结束咯!

Good night!

相关文章:

冒泡排序

贵阳这个地方的天气变化好大呀&#xff0c;前两天晒大太阳&#xff0c;今天就冷的脚抖&#xff0c;简直不要太冷&#xff0c;但是不管怎么样&#xff0c;还是要学习的哟&#xff01; 冬天来了&#xff0c;春天确实还有一点远&#xff01; 好了&#xff0c;话不多说&#xff0c;…...

docker基于debian11基础环境安装libreoffice

首先下载指定版本的libreoffice&#xff0c;注意debian11下需要选择Linux (64-bit) (deb) 官方下载地址&#xff1a;https://www.libreoffice.org/download/download-libreoffice/?typedeb-x86_64&version7.6.2&langzh-CN 将文件上传到服务器并解压缩备用&#xff0c…...

Intel Devkit Call for Paper Challenge - Advanced Award

...

【正点原子STM32连载】 第五十章 FATFS实验 摘自【正点原子】APM32F407最小系统板使用指南

1&#xff09;实验平台&#xff1a;正点原子stm32f103战舰开发板V4 2&#xff09;平台购买地址&#xff1a;https://detail.tmall.com/item.htm?id609294757420 3&#xff09;全套实验源码手册视频下载地址&#xff1a; http://www.openedv.com/thread-340252-1-1.html## 第五…...

12. 机器学习——评价指标

机器学习面试题汇总与解析——评价指标 本章讲解知识点 什么是评价指标?机器学习本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是…...

代码随想录算法训练营第23期day45|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数

目录 一、&#xff08;leetcode 70&#xff09;爬楼梯 二、&#xff08;leetcode 322&#xff09;零钱兑换 三、&#xff08;leetcode 279&#xff09;完全平方数 一、&#xff08;leetcode 70&#xff09;爬楼梯 力扣题目链接​​​​​​ 状态&#xff1a;查看思路后AC 除…...

uniapp公共css

/* 弹性布局 */ .flex{display: flex; } .a-c{align-items: center; } .a-s{align-items: flex-start; } .a-e{align-items: flex-end; } .j-c{justify-content: center; } .j-sb{justify-content: space-between; } .j-s{justify-content: flex-start; } .j-e{justify-content…...

C语言—i++、++i、条件运算符、goto语句、注释

i和i #include <stdio.h> int main() {int i5,j;j i;printf("i%d,j%d\n", i, j);i 5;j i;printf("i%d,j%d\n", i, j);system("pause");return 0;}i6,j6 i6,j5 请按任意键继续. . .条件运算符 goto语句 #include <stdio.h> int …...

Java自学第8课:电商项目(3) - 重新搭建环境

由于之前用的jdk和eclipse&#xff0c;以及mysql并不是视频教程所采用的&#xff0c;在后面运行源码和使用作者提供源码时&#xff0c;总是报错&#xff0c;怀疑&#xff1a; 1 数据库有问题 2 jdk和引入的jar包不匹配 3 其他什么未知的错误&#xff1f; 所以决定卸载jdk e…...

深度学习_11_softmax_图片识别代码原理解析

完整代码&#xff1a; import torch from d2l import torch as d2l"创建训练集&创建检测集合" batch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size)"每个图片长度&#xff0c;以及图片种类" num_inputs 784 num_output…...

Java Web——前端HTML入门

目录 HTML&CSS3&JavaScript简述 1. HTML概念 2. 超文本 3. 标记语言 4. HTML基础结构 5. HTML基础词汇 6. HTML语法规则 7. VS Code 推荐使用的插件 8. 在线帮助文档 HTML&CSS3&JavaScript简述 HTML 主要用于网页主体结构的搭建&#xff0c;像一个毛坯…...

华为ensp:为vlan配置ip

配置对应vlan的ip vlan1 interface Vlanif 1 进入vlan1 ip address 192.168.1.254 24配置IP为192.168.1.254 子网掩码为24位 这样就配置上ip了 vlan2 interface Vlanif 2 ip address 192.168.2.254 24 vlan3 interface Vlanif 3 ip address 192.168.3.254 24 查看结果 …...

laravel8-rabbitmq消息队列-实时监听跨服务器消息

使用场景介绍&#xff1a; 1&#xff09;用于实时监听远程服务器发出的消息&#xff08;json格式消息&#xff09;&#xff0c;接受并更新消息状态&#xff0c;存储到本地服务器 2&#xff09;环境&#xff1a;lNMP&#xff08;laravel8&#xff09; 3&#xff09;服务器需要开…...

git清除历史提交记录保持本地文件不变

https://www.cnblogs.com/langkyeSir/p/14528857.html git删除历史版本&#xff0c;保留当前状态。 有时候&#xff0c;我们误提交了某些隐私文件&#xff0c;使用git rm xxx删除后&#xff0c;其实版本库中是有历史记录的&#xff0c;想要删除这些记录&#xff0c;但是又不想…...

SOME/IP学习笔记2

1. SOME/IP 协议 SOME/IP目前支持UDP&#xff08;用户传输协议&#xff09;和TCP&#xff08;传输控制协议&#xff09;&#xff0c; PS:UDP和TCP区别如下 TCP面向连接的&#xff0c;可靠的数据传输服务&#xff1b;UDP面向无连接的&#xff0c;尽最大努力的数据传输服务&…...

python实现FINS协议的TCP服务端(篇一)

python实现FINS协议的TCP服务端是一件稍微麻烦点的事情。它不像modbusTCP那样&#xff0c;可以使用现成的pymodbus模块去实现。但是&#xff0c;我们可以根据协议帧进行组包&#xff0c;自己去实现帧的格式&#xff0c;而这一切可以基于socket模块。本文为第一篇。 一、了解FI…...

利用uni-app 开发的iOS app 发布到App Store全流程

1.0.3 20200927 更新官方对应用审核流程的状态。 注&#xff1a;最新审核后续将同步社区另一篇记录 AppStore 审核被拒原因记录及解决措施 &#xff1a;苹果开发上架常见问题 | appuploader使用教程 1.0.2 20200925 新增首次驳回拒绝邮件解决措施。 1.0.1 20200922 首次…...

5个高质量的实用办公软件,每一款都是良心推荐

在现代办公环境中&#xff0c;高效的办公软件可以极大地提升工作效率&#xff0c;简化工作流程&#xff0c;帮助我们更好地完成工作。今天就给大家分享5个高质量的实用办公软件&#xff0c;每一款都是良心推荐。 01、FastStone Capture&#xff08;截图工具&#xff09; FastSt…...

基于GPTs个性化定制SCI论文专业翻译器

1. 什么是GPTs GPTs是OpenAI在2023年11月6日开发者大会上发布的重要功能更新&#xff0c;允许用户根据特定需求定制自己的ChatGPT模型。 Introducing GPTs 官方介绍页面https://openai.com/blog/introducing-gpts 在原有自定义ChatGPT的流程中&#xff0c;首先需要自己编制p…...

Final Cut Pro X for Mac:打造专业级视频剪辑的终极利器

随着数字媒体技术的不断发展&#xff0c;视频剪辑已经成为各行各业不可或缺的一部分。Final Cut Pro X for Mac作为一款专业的视频剪辑软件&#xff0c;凭借其强大的功能和易用性&#xff0c;已经成为Mac用户的首选。本文将向您详细介绍Final Cut Pro X for Mac的优势、功能以及…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点&#xff0c;但无自动故障转移能力&#xff0c;Master宕机后需人工切换&#xff0c;期间消息可能无法读取。Slave仅存储数据&#xff0c;无法主动升级为Master响应请求&#xff…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。 本文全面剖析RNN核心原理&#xff0c;深入讲解梯度消失/爆炸问题&#xff0c;并通过LSTM/GRU结构实现解决方案&#xff0c;提供时间序列预测和文本生成…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下&#xff0c;限制某个 IP 的访问频率是非常重要的&#xff0c;可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案&#xff0c;使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

深入理解Optional:处理空指针异常

1. 使用Optional处理可能为空的集合 在Java开发中&#xff0c;集合判空是一个常见但容易出错的场景。传统方式虽然可行&#xff0c;但存在一些潜在问题&#xff1a; // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...