冒泡排序
贵阳这个地方的天气变化好大呀,前两天晒大太阳,今天就冷的脚抖,简直不要太冷,但是不管怎么样,还是要学习的哟!
冬天来了,春天确实还有一点远!
好了,话不多说,我们来开始今天的学习。今天我们来讲冒泡排序,什么是冒泡排序呢?
冒泡排序是一种基本的排序算法,其思想是通过比较两个相邻元素的大小,将较大的元素逐渐交换到数组的最末尾。
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!
相关文章:

冒泡排序
贵阳这个地方的天气变化好大呀,前两天晒大太阳,今天就冷的脚抖,简直不要太冷,但是不管怎么样,还是要学习的哟! 冬天来了,春天确实还有一点远! 好了,话不多说,…...
docker基于debian11基础环境安装libreoffice
首先下载指定版本的libreoffice,注意debian11下需要选择Linux (64-bit) (deb) 官方下载地址:https://www.libreoffice.org/download/download-libreoffice/?typedeb-x86_64&version7.6.2&langzh-CN 将文件上传到服务器并解压缩备用,…...

【正点原子STM32连载】 第五十章 FATFS实验 摘自【正点原子】APM32F407最小系统板使用指南
1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html## 第五…...
12. 机器学习——评价指标
机器学习面试题汇总与解析——评价指标 本章讲解知识点 什么是评价指标?机器学习本专栏适合于Python已经入门的学生或人士,有一定的编程基础。本专栏适合于算法工程师、机器学习、图像处理求职的学生或人士。本专栏针对面试题答案进行了优化,尽量做到好记、言简意赅。这才是…...
代码随想录算法训练营第23期day45|70. 爬楼梯 (进阶)、322. 零钱兑换、279.完全平方数
目录 一、(leetcode 70)爬楼梯 二、(leetcode 322)零钱兑换 三、(leetcode 279)完全平方数 一、(leetcode 70)爬楼梯 力扣题目链接 状态:查看思路后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,以及mysql并不是视频教程所采用的,在后面运行源码和使用作者提供源码时,总是报错,怀疑: 1 数据库有问题 2 jdk和引入的jar包不匹配 3 其他什么未知的错误? 所以决定卸载jdk e…...
深度学习_11_softmax_图片识别代码原理解析
完整代码: import torch from d2l import torch as d2l"创建训练集&创建检测集合" batch_size 256 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size)"每个图片长度,以及图片种类" 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 主要用于网页主体结构的搭建,像一个毛坯…...

华为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消息队列-实时监听跨服务器消息
使用场景介绍: 1)用于实时监听远程服务器发出的消息(json格式消息),接受并更新消息状态,存储到本地服务器 2)环境:lNMP(laravel8) 3)服务器需要开…...
git清除历史提交记录保持本地文件不变
https://www.cnblogs.com/langkyeSir/p/14528857.html git删除历史版本,保留当前状态。 有时候,我们误提交了某些隐私文件,使用git rm xxx删除后,其实版本库中是有历史记录的,想要删除这些记录,但是又不想…...

SOME/IP学习笔记2
1. SOME/IP 协议 SOME/IP目前支持UDP(用户传输协议)和TCP(传输控制协议), PS:UDP和TCP区别如下 TCP面向连接的,可靠的数据传输服务;UDP面向无连接的,尽最大努力的数据传输服务&…...

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

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

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

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

Final Cut Pro X for Mac:打造专业级视频剪辑的终极利器
随着数字媒体技术的不断发展,视频剪辑已经成为各行各业不可或缺的一部分。Final Cut Pro X for Mac作为一款专业的视频剪辑软件,凭借其强大的功能和易用性,已经成为Mac用户的首选。本文将向您详细介绍Final Cut Pro X for Mac的优势、功能以及…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...

《从零掌握MIPI CSI-2: 协议精解与FPGA摄像头开发实战》-- CSI-2 协议详细解析 (一)
CSI-2 协议详细解析 (一) 1. CSI-2层定义(CSI-2 Layer Definitions) 分层结构 :CSI-2协议分为6层: 物理层(PHY Layer) : 定义电气特性、时钟机制和传输介质(导线&#…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...

【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...