【排序算法】⑤冒泡排序

系列文章目录

 第一篇:【排序算法】①直接插入排序-CSDN博客

第二篇:【排序算法】②希尔排序-CSDN博客

第三篇:【排序算法】③直接选择排序-CSDN博客

第四篇:【排序算法】④堆排序-CSDN博客

第五篇:【排序算法】⑤冒泡排序-CSDN博客

第六篇:【排序算法】⑥快速排序:Hoare、挖坑法、前后指针法-CSDN博客

第七篇:【排序算法】⑦归并排序-CSDN博客


文章目录

目录

系列文章目录

文章目录

前言

一、冒泡排序是什么?

二、冒泡排序图解

三、实现代码

四、分析冒泡排序

总结



前言

冒泡排序属于交换排序的一种。交换排序基本思想:所谓交换,就是按序列中两个数据码值的比较结果来决定是否对换这两个数据在序列中的位置。

交换排序的特点是:将码值大的向尾部移动,码值小的往前移动

冒泡排序实现简单,主要是为后续同属于交换排序的快排做铺垫,故本文篇幅较短。


一、冒泡排序是什么?

冒泡排序的基本思想

1. 比较相邻的元素:首元素设从i=0开始,依次比较相邻的两个元素(j=i+1)。如果第一个比第二个大(升序排序),就交换它们。

2. 然后i不变,j++,循环直到 j 到达数组末尾,此时最后一个数据一定是该数据集最大的。

3. i++,重复上述步骤,直到遍历完整个数组。

核心思想:重复遍历数组,比较相邻元素,如果顺序错误就交换它们

排序过程:每轮遍历会将当前最大的元素"冒泡"到正确位置,类似水中的气泡上浮,因此得名。

二、冒泡排序图解

设数组为int a[ ]={5,3,8,4,2},两层循环,外层循环控制 i=0,内存控制 j=i+1,各自的循环结束时++,结束条件为到达数组末尾<n;

三、实现代码

以升序为例,降序同理。

//冒泡排序
void BubbleSort(int* a, int n)
{if (!a)return;for (int i = 0; i < n; ++i){int Change = 1;for (int j = i + 1; j < n; ++j){if (a[i] > a[j]){swap(&a[i], &a[j]);Change = 0;}}//如果Change的值未变,则说明数组后续数据都有序if (Change)break;}
}void swap(int* a, int* b)
{int temp = *a;*a = *b;*b = temp;
}

break优化解释:

如果在i=某值的一轮比较中,Change的值都未发生改变(即内循环没有发生交换),说明后续数据都大于或等于a[i]且呈现递增趋势为有序状态,故此时可以跳出循环,提前结束排序。

四、分析冒泡排序

冒泡排序的特性总结:
1. 冒泡排序是一种较容易理解的排序;
2. 时间复杂度:O(N^2),(若加上break优化,则较不优化平均快上3倍);
3. 空间复杂度:O(1)
4. 稳定性:稳定


总结

本文是【排序算法】系类第五篇,主要介绍什么是冒泡排序,以及如何实现冒泡排序,最后分析冒泡排序特性。

冒泡排序较为简单,但它是为同为交换排序的“快速排序”做铺垫,快速排序是当今实际代码中最常使用的排序,也是本系列的重点所在。

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

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

相关文章

如何使用gpt进行模式微调(2)?

对 GPT&#xff08;Generative Pre-trained Transformer&#xff09;类大模型进行微调&#xff08;Fine-tuning&#xff09;&#xff0c;是将其适配到特定任务或领域的关键步骤。以下是 ​​全流程指南​​&#xff0c;涵盖方法选择、数据准备、训练配置、评估部署等核心环节&a…

基于飞算JavaAI实现图书管理系统框架部署

摘要 本文详细介绍了如何利用飞算JavaAI技术实现图书管理系统的框架部署。首先阐述了飞算JavaAI的基本概念、特点和优势&#xff0c;接着对图书管理系统的需求进行分析&#xff0c;然后按照软件开发流程&#xff0c;从系统设计、代码生成、框架搭建到部署测试&#xff0c;逐步展…

ODE-by-Matlab-01-人口增长模型

博客地址&#xff1a;Matlab微分方程01-模型 马尔萨斯模型 马尔萨斯模型是人口增长模型中最简单的模型&#xff0c;它由英国牧师家马尔萨斯在1798年提出。 他利用在教堂工作的机会&#xff0c;收集英国100多年的人口数据&#xff0c;发现人口的相对增长率是常数。 在这个基础…

云原生环境 Prometheus 企业级监控实战

目录 一&#xff1a;基于 kubernetes 的 Prometheus 介绍 1&#xff1a;环境简介 2&#xff1a;监控流程 3&#xff1a;Kubernetes 监控指标 二&#xff1a;Prometheus 的安装 1&#xff1a;从 Github 克隆项目分支 2&#xff1a;安装 Prometheus Operator --server-si…

Python爬虫实战:研究django-dynamic-scraper 框架,构建电商动态数据采集系统

1. 引言 1.1 研究背景 据 Statista 数据,2025 年全球互联网数据总量将突破 175ZB,其中 80% 为非结构化数据(网页、文本、图像等)。高效提取这些数据对企业竞争情报、学术研究至关重要。网络爬虫作为数据获取的核心工具,经历了从静态页面抓取到动态内容解析的演进,但传统…

掌握MATLAB三维可视化:从基础到实战技巧

目录 1. 引言&#xff1a;三维可视化的重要性 2. 基础三维图形绘制 2.1 三维曲线图&#xff08;plot3&#xff09; 2.2 三维散点图&#xff08;scatter3&#xff09; 2.3 三维网格图&#xff08;mesh&#xff09; 2.4 三维曲面图&#xff08;surf&#xff09; 3. 参数曲面…

Linux 服务部署:自签 CA 证书构建 HTTPS 及动态 Web 集成

Linux 服务部署&#xff1a;自签 CA 证书构建 HTTPS 及动态 Web 集成 一、HTTPS基础原理 HTTPS是HTTP协议基于SSL/TLS协议的加密版本&#xff0c;核心差异及握手过程如下&#xff1a;HTTP与HTTPS对比协议传输方式端口核心特点HTTP明文传输80无加密&#xff0c;安全性低HTTPS数据…

Python3.10 + Firecrawl 下载公众号文章

获取Firecrawl apikey 打开官网&#xff0c;使用github账号登录 https://www.firecrawl.dev/ 进入个人中心 https://www.firecrawl.dev/app/api-keys 使用PyCharm创建python项目 创建.env # API配置 FIRECRAWL_API_KEYfc-9*********0816d5ac6b20 # 输出配置 OUTPUT_DIRout…

IoT/透过oc_lwm2m/boudica150 源码中的AT指令序列,分析NB-IoT接入华为云物联网平台IoTDA的工作机制

文章目录概述指令调用顺序具体接入指令分析ATE0 关闭回显ATQREGSWT 设置&#xff08;平台&#xff09;注册模式ATQLWSREGIND0 手动注册平台set_autoconnect / ATNCONFIGATNBANDx,xset_plmn / ATCOPS_set_apn / ATCGDCONT(安全)接入参数 CDPDTLSPSKATNNMI 设置新消息指示_check_…

Android UI(一)登录注册 - Compose

UI - 登录注册 - Compose一、声明式UI1. **颠覆传统开发模式**2. **技术优势**3. **开发效率提升**4. **未来生态方向**5. **实际影响**二、创建项目1. Compose UI结构2. Scaffold3. 可组合函数三、创建组件页面1. LoginPage2. RegisterPage3. MainPage四、导航1. 添加依赖2. 使…

分享10个ai生成ppt网站(附ai生成ppt入口)

实测对比&#xff1a;15页PPT从3小时压缩到3分钟的秘密武器 当ChatGPT能写方案、Midjourney能画图&#xff0c;做PPT还在手动排版就OUT了&#xff01;这些AI生成PPT网站已实现「输入文案秒出设计稿」&#xff0c;无论职场汇报、毕业答辩还是路演融资&#xff0c;零设计基础也能…

最强开源视频模型通义万相wan2.1在comfyui中的安装应用详解

摘要&#xff1a;阿里巴巴开源通义万相Wan2.1模型&#xff0c;支持文生视频、图生视频等多种功能&#xff0c;并整合关键环节简化创作流程。官方和Kiji版本需配套使用各自工作流。低显存显卡可使用GGUF模型解决方案&#xff0c;最低适配4G显存。ComfyUI已原生支持该模型&#x…

机器学习:基于OpenCV和Python的智能图像处理 实战

机器学习&#xff1a;基于OpenCV和Python的智能图像处理实战——待填坑图像处理基础图像的基本表示方法图像处理的基本操作图像运算图像的色彩空间转换图像几何变换4.1 仿射变换4.2 重映射4.3 投影变换 4.4 极坐标变换5 图像直方图处理7 图像阈值处理8 图像形态学处理github地址…

proteus实现简易DS18B20温度计(stm32)

一、新建proteus工程 具体看前面文章 二、搭建电路 需要配置供电网络以及寻找元器件&#xff0c;细节看前面文章&#xff0c;下面给出电路图 电路包含了五个部分&#xff1a; 1、DS18B20&#xff1a;数据引脚记得上拉 2、stm32电路 3、串口电路&#xff08;右下角那个器件…

Autoppt-AI驱动的演示文稿生成工具

本文转载自&#xff1a;Autoppt-AI驱动的演示文稿生成工具 - Hello123工具导航 ** 一、 Autoppt&#xff1a;AI 驱动的智能演示文稿生成工具 Autoppt 是一款基于人工智能的在线演示文稿生成平台&#xff0c;通过输入主题或上传文档&#xff08;Word/PDF/ 图片等&#xff09;&…

Flink on YARN启动全流程深度解析

Flink on YARN 模式启动流程及核心组件协作详解整个过程分为三个主要阶段&#xff1a;​​JobManager 启动​​&#xff08;作业提交与 AM 初始化&#xff09;​​TaskManager 资源分配与启动​​​​任务部署与执行​​第一阶段&#xff1a;作业提交与 JobManager (AM) 启动​…

安卓开发者自学鸿蒙开发1基础入门

1.基础 声明式UI&#xff1a;​​ ​​核心&#xff1a;​​ 你​​声明​​你想要UI是什么样子&#xff08;在build()方法里描述&#xff09;&#xff0c;而不是一步步命令式地创建和操作View对象&#xff08;findViewById, setText, setOnClickListener&#xff09;。 模块化…

弹性扩展新范式:分布式LLM计算的FastMCP解决方案

本文较长&#xff0c;建议点赞收藏&#xff0c;以免遗失。更多AI大模型应用开发学习视频及资料&#xff0c;尽在聚客AI学院。如果你想系统学习AI大模型应用开发&#xff0c;挑战AI高薪岗位&#xff0c;可在文章底部联系。在现代大语言模型&#xff08;LLM&#xff09;应用架构中…

springboot项目不同平台项目通过http接口AES加密传输

前言&#xff1a; 在公司协作开发的过程中&#xff0c;自己的项目是公共调用平台&#xff0c;也可以说是中转平台&#xff0c;供公司其他团队的项目进行接口调用。因为是不同团队项目之间的相互调用&#xff0c;所以不能通过openFeign远程调用。只能通过http远程调用&#xff…

推荐5个网页模板资源网

1. 企业模板官方网站&#xff1a; http://www.qimoban.com介绍&#xff1a;企业模板(qimoban.com )是一个专注于提供丰富多样的企业模板的优质平台&#xff0c;致力于为企业和个人打造高效、专业、个性化的模板获取渠道。该平台提供海量的企业模板资源&#xff0c;涵盖企业官网…