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

算法 class 004(选择,冒泡,插入)

选择排序:


刚进入 j 循环的样子

j 跳出循环后,b 指向最小值的坐标

然后交换 i 和 b 位置的 值

随后 i ++, b = i , i = j+1; 开始新一轮的排序,

void SelectAQort(int* arr,int size)//选择排序
{for (int i = 0; i < size-1; i++){	//i 的位置就是最小值应该放入的位置int b = i;//存储最小值下标,一开始默认是 ifor (int j = i+1; j < size;j++){if (arr[j] < arr[b])//随着j的变化{	//如果j下标的值比b下标还小的值b = j;//那么就将他赋值给 b }}//出了 j的循环,b指向的就是最小值的坐标,将 b 与 i 交换if (i == b)//处理i就是最小值的情况,continue;Swap(arr, i, b);//交换函数// 9,8,2,1,7,9,4,8,7,2,3,4 }
}

冒泡排序

以上图为例

第一次进入 j 循环

j 大于 j+1位置的数,8 和 3交换,j++ = 1;

j 大于 j+1位置的数,8 和 7交换,j++ = 2;

j 大于 j+1位置的数,8 和 4交换,j++ = 3;

j 不大于 j+1位置的数,不交换 单纯的 j++ = 4;

j 大于 j+1位置的数,9 和 5交换,j++ = 5;

j 大于 j+1位置的数,9 和 7交换,j++ = 6;

j 大于 j+1位置的数,9 和 2交换,j++ = 7;

j 大于 j+1位置的数,9 和 8交换,j++ = 8;

j 大于 j+1位置的数,9 和 4交换,j++ = 9;

j 不大于 j +1位置的数,不交换,j++ = 10;

j 大于 j+1位置的数,9 和 5交换,j++ = 11;

j 大于 j+1位置的数,9 和 7交换,j++ = 12;

j 不大于 j+1位置的数,不交换,j++ = 13

由与 j < i 所以加完之后 j 循环第一次结束

结束后 i 的位置就是最大值了

然后 i-- ,j 又重新来到 0 位置

新的循环,将是 j 遍历至 i -1的位置,i - 1的位置会得出新的最大值

i 最终的有效位 是 1

进入 i 是 1的循环

j = 0 ,j 与 j +1做比较,大于就交换然后跳出 j 的循环(j++会等于 i ,跳出),跳出 i 的循环(i -- 等于0,跳出),函数结束

如果不大于,直接跳出 j 的循环,然后跳出 i 的循环,与上面一样,只是少了一次交换。

插入排序

i 赋值 为 1 默认 1下标前面的数是有序的

j = i ,用 j 来实现插入,如果 j 小于 j -1,就交换,如果不小于,我们使用 j = 0,提前结束 j 循环。

以上图为例

j 与 j-1比较,j 不小于 j -1 ,j = 0,j循环第一次结束

i++ , j = i

j < j - 1,交换,然后 j--;

j > 0,继续判断,j 不小于 j - 1,j = 0; j循环第二次结束,

i++ , j = i;

我们的 i 前面的数都是有序的,所以,如果j 第一次判断就不小于 j - 1,,我们就可以使 j = 0,提前结束循环。

小于我们就一直往前找,如果 i 指向的数是当前最小值,在 j = 1时,j 与 j - 1,交换完后 ,

j-- = 0,会自己跳出循环,

如果在往前找的过程中有一次没有交换, 就用 j = 0;提前结束

相关文章:

算法 class 004(选择,冒泡,插入)

选择排序&#xff1a; 刚进入 j 循环的样子 j 跳出循环后&#xff0c;b 指向最小值的坐标 然后交换 i 和 b 位置的 值 随后 i , b i , i j1; 开始新一轮的排序&#xff0c; void SelectAQort(int* arr,int size)//选择排序 {for (int i 0; i < size-1; i){ //i 的位置就是…...

linux---awk命令详细教程

awk是一种强大的编程语言&#xff0c;用于在Linux/Unix系统下对文本和数据进行处理。以下是对awk的详细教程&#xff1a; 一、awk简介 awk由Alfred Aho、Brian Kernighan和Peter Weinberger三人开发&#xff0c;其名称分别代表这三位作者姓氏的第一个字母。awk支持用户自定义…...

一个通用的居于 OAuth2的API集成方案

在现代 web 应用程序中&#xff0c;OAuth 协议是授权和认证的主流选择。为了与多个授权提供商进行无缝对接&#xff0c;我们需要一个易于扩展和维护的 OAuth 解决方案。本文将介绍如何构建一个灵活的、支持多提供商的 OAuth 系统&#xff0c;包括动态 API 调用、路径参数替换、…...

STM32配合可编程加密芯片SMEC88ST的防抄板加密方案设计

SMEC88ST SDK开发包下载 目前市场上很多嵌入式产品方案都是可以破解复制的&#xff0c;主要是因为方案主芯片不具备防破解的功能&#xff0c;这就导致开发者投入大量精力、财力开发的新产品一上市就被别人复制&#xff0c;到市场上的只能以价格竞争&#xff0c;最后工厂复制的产…...

QML学习(五) 做出第一个简单的应用程序

通过前面四篇对QML已经有了基本的了解&#xff0c;今天先尝试做出第一个单页面的桌面应用程序。 1.首先打开Qt,创建项目&#xff0c;选择“QtQuick Application - Empty” 空工程。 2.设置项目名称和项目代码存储路径 3.这里要注意选择你的编译器类型&#xff0c;以及输出的程…...

深入解析Android Framework中的android.location包:架构设计、设计模式与系统定制

深入解析Android Framework中的android.location包:架构设计、设计模式与系统定制 目录 引言android.location包概述核心类解析 LocationManagerLocationProviderLocationCriteriaGpsStatusGpsStatus.ListenerLocationListener位置服务的工作原理位置信息的获取与处理GPS状态…...

【C++11】类型分类、引用折叠、完美转发

目录 一、类型分类 二、引用折叠 三、完美转发 一、类型分类 C11以后&#xff0c;进一步对类型进行了划分&#xff0c;右值被划分纯右值(pure value&#xff0c;简称prvalue)和将亡值 (expiring value&#xff0c;简称xvalue)。 纯右值是指那些字面值常量或求值结果相当于…...

mongodb(6.0.15)安装注意事项,重装系统后数据恢复

window10系统 上周重装了系统&#xff0c;环境变量之类的都没有了。现在要恢复。 我电脑里之前的安装包没有删除&#xff08;虽然之前也没在C盘安装&#xff0c;但是找不到了&#xff0c;所以需要重新下载安装&#xff09;&#xff0c;长下图这样。这个不是最新版本&#xff0…...

union的实际使用

记录一下&#xff0c;免得忘记&#xff1a; 1、定义一个共用体变量 这里定义一个64位变量 i2creg_rev&#xff0c;然后通过共用体定义两个位变量bits和bits_reverse&#xff0c;通过bit可以访问指定位的值大小&#xff0c;不需要自己再左移右移转换。 bits_reverse是bits的对…...

EKF 自动匹配维度 MATLAB代码

该 M A T L A B MATLAB MATLAB代码实现了扩展卡尔曼滤波( E...

Oracle复合索引规则指南

在Oracle中可以创建组合索引&#xff0c;即同时包含两个或两个以上列的索引。在组合索引的使用方面&#xff0c;Oracle有以下特点&#xff1a; 1、 当使用基于规则的优化器&#xff08;RBO&#xff09;时&#xff0c;只有当组合索引的前导列出现在SQL语句的where子句中时&#…...

JS - Array Api

判断一个对象是否为数组 /* 语法&#xff1a; Array.isArray(object); 参数&#xff1a;object 必需&#xff0c;要测试的对象。返回值 如果 object 是数组&#xff0c;则为 true&#xff1b;否则为 false。 如果 object 参数不是对象&#xff0c;则返回 false。 */ 一、改…...

【JS】for-in 和 for-of遍历对象的区别

【介绍】 for-in 和 for-of 都是 JavaScript 中用于遍历数据结构的循环语句&#xff0c;但它们的工作原理和适用场景有所不同。特别是它们在遍历对象时的行为是不同的。 【区别】 for-in 遍历对象 for-in 是用于遍历对象的 可枚举属性的键名&#xff08;属性名&#xff09;…...

【每日学点鸿蒙知识】ets匿名类、获取控件坐标、Web显示iframe标签、软键盘导致上移、改变Text的背景色

1、HarmonyOS ets不支持匿名类吗&#xff1f; 不支持&#xff0c;需要显式标注对象字面量的类型&#xff0c;可以参考以下文档&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/typescript-to-arkts-migration-guide-V5#%E9%9C%80%E8%A6%81%E6%…...

深度学习blog- 数学基础(全是数学)

矩阵‌&#xff1a;矩阵是一个二维数组&#xff0c;通常由行和列组成&#xff0c;每个元素可以通过行索引和列索引进行访问。 张量‌&#xff1a;张量是一个多维数组的抽象概念&#xff0c;可以具有任意数量的维度。除了标量&#xff08;0D张量&#xff09;、向量&#xff08;…...

最后100米配送

1. 项目概述 1.1 项目目标 集成无人机与电动车&#xff1a;设计并实现将无人机固定在电动车上&#xff0c;利用电动车的电源进行飞行&#xff0c;实现高楼内部从电动车位置到用户办公/居住地点的最后100米精准配送。低成本实现&#xff1a;通过利用电动车现有的电源和结构&am…...

Linux的进程替换以及基础IO

进程替换 上一篇草率的讲完了进程地址空间的组成结构和之间的关系&#xff0c;那么我们接下来了解一下程序的替换。 首先&#xff0c;在进程部分我们提过了&#xff0c;其实文件可以在运行时变成进程&#xff0c;而我们使用的Linux软件其实也是一个进程&#xff0c;所以进一步…...

《计算机网络A》单选题-复习题库

1. 计算机网络最突出的优点是&#xff08;D&#xff09; A、存储容量大B、将计算机技术与通信技术相结合C、集中计算D、资源共享 2. RIP 路由协议的最大跳数是&#xff08;C&#xff09; A、13B、14C、15D、16 3. 下面哪一个网络层次不属于 TCP/IP 体系模型&#xff08;D&a…...

闲谭Scala(2)--安装与环境配置

1. 概述 Java开发环境安装&#xff0c;需要两步&#xff0c;第一安装JDK&#xff0c;第二配置环境变量。 Scala的话&#xff0c;也是两步&#xff0c;第一安装Scale环境&#xff0c;第二配置环境变量。 需要注意的是&#xff0c;配置环境变量&#xff0c;主要是想让windows操…...

Python基于卷积神经网络的车牌识别系统开发与实现

1. 简介 车牌识别是人工智能在交通领域的重要应用&#xff0c;广泛用于高速违章检测、停车场管理和智能交通系统等场景。本系统通过基于卷积神经网络&#xff08;CNN&#xff09;的深度学习算法&#xff0c;结合 Python 和 MySQL 实现车牌的快速识别与管理。 系统特点&#x…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...