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

【排序】——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.时空复杂度

在这里插入图片描述

相关文章:

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

冒泡排序 1.原理 左边大于右边交换一趟排下来最大的交换到右边来(接下来所以文章用升序举例) 从左到右&#xff0c;相邻元素进行比较。 每次比较一轮&#xff0c;就会找到序列中最大的一个&#xff08;最小的一个——降序&#xff09;。这个数就会从序列的最右边冒出来。 以…...

在MySQL中创建数据库和表

在MySQL中&#xff0c;创建数据库和表是数据库管理的基础操作。下面我将详细解释如何先创建一个数据库&#xff0c;然后在该数据库中创建一个或多个表。 ### 1. 创建数据库 首先&#xff0c;你需要登录到MySQL服务器。然后&#xff0c;使用CREATE DATABASE语句来创建一个新的…...

Hadoop 安装教程——单节点模式和分布式模式配置

文章目录 一、预备知识1.1 Hadoop 发行版本1.2 部署方式 二、预备条件2.1 环境准备2.2 创建新用户(可选)2.3 配置 SSH 无密码登录2.4 下载 Hadoop2.5 编辑 hadoop-env.sh 脚本2.6 编辑 dfs 和 yarn 脚本 三、单节点模式部署3.1 官方使用案例3.2 查看运行结果 四、伪分布模式部署…...

给c++小白的教程10:一维数组

好久不见&#xff01;我又来更教程了。 升到初二&#xff0c;由于学业原因&#xff0c;更新速度减慢了&#xff0c;十分抱歉&#xff01; 以后将恢复到一周一次的频率 作者只是个普通学生&#xff0c;做的教程多有不足&#xff0c;希望大家批评指正&#xff01; 赫炎今天在一…...

【排序】3.希尔排序法

希尔排序&#xff08;直接插入排序的优化&#xff09; 1.分组思想 上图中gap为5&#xff0c;说明要分成5组。 这5组分别用了五种颜色的线条连接起来了。 第1组&#xff1a;9、4 第2组&#xff1a;1、8 第3组&#xff1a;2、6 第4组&#xff1a;5、3 第5组&#xff1a;7、5 2.缩…...

商品详情数据API接口概述(json数据格式返回参考)

商品详情数据API接口是指一种编程接口&#xff08;API&#xff0c;Application Programming Interface&#xff09;&#xff0c;它允许开发者或系统以编程方式获取商品的详细信息。这些信息包括但不限于SKU的详细信息、商品图片、商品属性、价格、库存状态、用户评价等。当调用…...

Jmeter简介

基础介绍 Jmeter录制脚本的原始是配置一个HTTP代理&#xff0c;然后浏览器通过这个代理访问测试页面从而完成脚本录制。 一、下载安装 jmeter本身不需要安装&#xff0c;需要配置环境变量JDK&#xff0c;然后打开bin文件夹中的jmeter.vbs即可。建议jdk 1.7及以上版本。 基本祖…...

网页前端开发之HTML入门篇:标题标签 heading

标题标签 heading <h1>-<h6>是HTML的标题标签&#xff0c;其标签内容会呈现六个不同级别的字号&#xff0c; <h1>字号最大&#xff0c;<h6>字号最小。 示例 <html><body><h1>一级标题</h1><h2>二级标题</h2>&l…...

医院信息化与智能化系统(3)

医院信息化与智能化系统(3) 这里只描述对应过程&#xff0c;和可能遇到的问题及解决办法以及对应的参考链接&#xff0c;并不会直接每一步详细配置 如果你想通过文字描述或代码画流程图&#xff0c;可以试试PlantUML&#xff0c;告诉GPT你的文件结构&#xff0c;让他给你对应的…...

数据结构(线性表)

1线性表的定义与操作 1.1线性表的定义 线性表是一种基础的数据结构&#xff0c;其主要特点是&#xff1a;数据元素之间存在一种线性关系&#xff08;一对一&#xff09;。线性表的每一个数据元素都有一个唯一的前驱和后继&#xff0c;除了第一个元素没有前驱&#xff0c;最后…...

ArcGIS Pro SDK (十八)栅格

ArcGIS Pro SDK (十八)栅格 环境:Visual Studio 2022 + .NET6 + ArcGIS Pro SDK 3.0 栅格 1 在文件夹中打开栅格数据集 // 使用文件夹路径创建 FileSystemConnectionPath 对象。 FileSystemConnectionPath connectionPath = new FileSystemConnectionPath(new System...

c++ 对象作用域

在 C 中&#xff0c;对象的作用域&#xff08;scope&#xff09;指的是对象的生命周期以及对象在程序中可以访问的范围。作用域影响对象的创建、使用和销毁&#xff0c;主要有以下几种类型&#xff1a; 1. 局部作用域&#xff08;Local Scope&#xff09; 局部作用域的对象是…...

【无标题】海尔AI英语面试

1.自我介绍 Good morning. I am delighted to have this English interview. My name is fu guilin. I graduated from CDUT with a degree in Information engineering. During my university years, I have laid a solid foundation in my professional knowledge. I posses…...

软件设计模式------概述

一&#xff1a;简述 目的&#xff1a;为了可重用代码&#xff0c;代码更容易被他人理解&#xff0c;提高代码的可靠性。 定义&#xff1a;是一套被反复使用&#xff0c;多数人知晓&#xff0c;经过分类编目的&#xff0c;代码设计经验的总结。 &#xff08;通俗来说&#xf…...

刷题/学习网站推荐

前言&#xff1a; 最近没怎么学习&#xff0c;荒芜生活&#xff0c;学不进去&#xff0c;太累了&#xff0c;就喜欢翻翻网站有没有好用的东西分享给大家&#xff0c;正好看到一些刷题的网站&#xff08;其实也是学习的网站吧&#xff09;&#xff0c;相比学程序的很多都是力扣…...

OQE-OPTICAL AND QUANTUM ELECTRONICS

文章目录 一、征稿简介二、重要信息三、服务简述四、投稿须知五、联系咨询 一、征稿简介 二、重要信息 期刊官网&#xff1a;https://ais.cn/u/3eEJNv 三、服务简述 四、投稿须知 1.在线投稿&#xff1a;由艾思科蓝支持在线投稿&#xff0c;请将文章全文投稿至艾思科蓝投稿系…...

在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?

大家好&#xff0c;我是锋哥。今天分享关于【在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处&#xff1f;】面试题&#xff1f;希望对大家有帮助&#xff1b; 在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处&#xff1f; 1000道 互联网大厂Java工程师 精选…...

Chromium html<textarea>c++接口定义

<textarea>&#xff1a;文本区域元素 <textarea> HTML 元素是一个多行纯文本编辑控件&#xff0c;适用于允许用户输入大量自由格式文本的场景。 例子&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> &l…...

OpenCV高级图形用户界面(13)选择图像中的一个矩形区域的函数selectROI()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 允许用户在给定的图像上选择一个感兴趣区域&#xff08;ROI&#xff09;。 该功能创建一个窗口&#xff0c;并允许用户使用鼠标来选择一个 ROI。…...

《计算机视觉》—— 基于dlib库的人检检测

文章目录 一、dlib库的安装1. 通过PyCharm的Settings安装2. 通过Anaconda安装&#xff08;适用于Windows等操作系统&#xff09;3. 通过命令行安装4.懒人安装 二、基于dlib库的人检测1.对图像进行人脸检测2.打开电脑摄像头&#xff0c;检测人脸 一、dlib库的安装 在PyCharm中&…...

如何将数据从小米传输到三星?完整教程

从小米手机换到三星设备似乎很麻烦&#xff0c;尤其是在传输所有重要数据的时候。好在有几种可靠的方法可供选择&#xff0c;包括三星的智能切换功能。但是三星智能切换功能能兼容小米吗&#xff1f; 在本指南中&#xff0c;我们将解答这个问题&#xff0c;并探索如何轻松高效…...

WechatRealFriends:微信虚假好友检测工具,让社交关系更透明

WechatRealFriends&#xff1a;微信虚假好友检测工具&#xff0c;让社交关系更透明 【免费下载链接】WechatRealFriends 微信好友关系一键检测&#xff0c;基于微信ipad协议&#xff0c;看看有没有朋友偷偷删掉或者拉黑你 项目地址: https://gitcode.com/gh_mirrors/we/Wecha…...

被忽视的性能金矿:如何释放笔记本90%隐藏算力

被忽视的性能金矿&#xff1a;如何释放笔记本90%隐藏算力 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar, and …...

MATLAB报错解析:深入理解eval与struct类型冲突的根源及修复方法

1. 从报错现象看MATLAB底层机制 第一次遇到"错误使用eval&#xff0c;未定义与struct类型的输入参数相对应的函数workspacefunc"这个报错时&#xff0c;我盯着红色报错信息愣了半天。作为用了MATLAB七八年的老用户&#xff0c;这种底层函数报错还真不多见。后来在论坛…...

效率提升神器:用快马AI自动诊断并修复npm 128错误,节省排错时间

效率提升神器&#xff1a;用快马AI自动诊断并修复npm 128错误&#xff0c;节省排错时间 最近在团队协作开发一个Node.js项目时&#xff0c;频繁遇到npm安装依赖报错128的问题。每次都要花大量时间排查SSH配置、网络代理或仓库源的问题&#xff0c;严重影响了开发效率。于是我开…...

具身Scaling Law押对了!独角兽新品1小时学会新任务,重复1800次成功率99%

克雷西 发自 凹非寺量子位 | 公众号 QbitAI机器人也开始内卷了&#xff0c;一位表现极其离谱的“新员工”&#xff0c;直接拉高了机器人的“就业门槛”。具身智能独角兽Generalist&#xff0c;刚刚推出了最新的研究成果——新模型Gen-1。在包装手机和折叠纸箱这些精细活儿上&am…...

BEV特征压缩算法:提升PETRv2模型推理效率的创新方案

BEV特征压缩算法&#xff1a;提升PETRv2模型推理效率的创新方案 1. 引言 在自动驾驶的3D感知领域&#xff0c;BEV&#xff08;鸟瞰图&#xff09;表示已经成为主流技术方向。PETRv2作为基于Transformer的先进3D检测模型&#xff0c;虽然精度表现出色&#xff0c;但其计算复杂…...

如何用clawPDF高效解决日常办公中的5大文档处理难题?

如何用clawPDF高效解决日常办公中的5大文档处理难题&#xff1f; 【免费下载链接】clawPDF Open Source Virtual (Network) Printer for Windows that allows you to create PDFs, OCR text, and print images, with advanced features usually available only in enterprise s…...

Qt for Android串口通信实战:usb-serial-for-android库的完整集成指南

Qt for Android串口通信实战&#xff1a;usb-serial-for-android库的完整集成指南 在工业控制、物联网设备调试等场景中&#xff0c;串口通信仍然是设备间可靠数据传输的首选方案。当我们需要在Android设备上通过Qt框架实现串口通信时&#xff0c;却发现Qt官方并未提供原生的A…...

python web框架streamlit(st)(二)

文章目录实现油量仪表盘实现散点图-原生实现散点图-Plotly(推荐)内容太多了&#xff0c;拆出一篇。实现油量仪表盘 就是换个组件而已。 创建fuel_indicator.py(油量仪表盘)(燃料指示器)&#xff0c;代码&#xff1a; import streamlit as st import plotly.graph_objects as …...