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

90.选择排序(理论分析)

一.选择排序


冒泡排序每相邻的俩个元素之间都会比较交换一次,效率比较慢。这对这个问题所改进的算法叫做选择排序。

二.选择排序的实现思路


首先在一组未排序的数据中假定一个最大或者最小元素,一般是第0个元素。然后在从剩余未排序的元素中寻找最大或最小元素的下标,然后将这个数与第n个数交换。如果第n个数是最大的,就不需要交换。

三.举例


假设现在有一组数据:3,9,1,5,2,要求使用选择排序进行从大到小排序。
步骤:
第一轮循环,先假定第0个元素3为最大元素。并记录下标0。然后逐次比较第0个元素和第一个,第二个,第三个,第四个,也就是元素9,1,5,2的大小。很明显第1个元素9是最大的,记录元素9的下标为1。然后交换俩个数的位置,也就是元素3和元素9的位置。
第一轮循环比较完成后:
9,3,1,5,2

第二轮比较,因为第一次排序选择的是将首元素作为最大值,最终经过互换位置,首元素排序完成,第二次排序就不需要排序首元素。
假定第1个元素3为最大元素。并记录下标1,然后逐次和第二个,第三个,第四个,也就是1,5,2的大小。很明显第三个元素5是最大的,记录元素5的下标3,然后交换俩个数的位置,也就是元素3和元素5的位置。
第二轮循环比较完成后:
9,5,1,3,2

第三轮比较,因为第一次和第二次排序已经把第0和第1个元素排序完成。所以第三次不用排序第0和第1个元素。

假定第2个元素1为最大元素。然后逐次比较第三个,第四个也就是3和2的大小,很明显元素3是最大的,记录元素3的下标3,然后交换俩个数的位置,也就是元素1和3的位置。
第三轮循环完成后:
9,5,3,1,2

第四轮比较,因为前三轮比较已经排序好了第0,1,2个元素,所以第四次排序不用排序这几个元素。
假定第3个元素1是最大元素,然后比较第三个和第四个也就是1和2的大小,和明显元素2是最大的,记录元素2的下标4,然后交换俩个数的位置,也就是元素1和2的位置。
第四轮循环完成后:
9,5,3,2,1

四.视频教程

90.选择算法(理论分析)_哔哩哔哩_bilibili

相关文章:

90.选择排序(理论分析)

一.选择排序 冒泡排序每相邻的俩个元素之间都会比较交换一次,效率比较慢。这对这个问题所改进的算法叫做选择排序。 二.选择排序的实现思路 首先在一组未排序的数据中假定一个最大或者最小元素,一般是第0个元素。然后在从剩余未排序的元素中…...

GitLab 如何跨版本升级?

本分分享 GitLab 跨版本升级的一些注意事项。 众所周知,GitLab 的升级必须要严格遵循升级路径,否则就会出现问题,导致升级失败。因此,在 GitLab 升级之前需要做好两件事情: 当前版本的确认升级路径的确认 极狐GitLa…...

【Fermat】费马小定理

定理 若存在整数 a , p 且g c d ( a , p ) 1 gcd(a,p)1gcd(a,p)1,即二者互为质数,则有 a ( p − 1 ) ≡ 1 ( m o d p ) a^{(p-1)}≡ 1(mod p) a (p−1) ≡1(modp) 目录 定理 引理 引理一 引理二 证…...

NVMe(Non-Volatile Memory Express)非易失性存储器访问和传输协议

目录 NVMe(Non-Volatile Memory Express)非易失性存储器访问和传输协议 一、NVMe的定义 二、NVMe的特点 三、NVMe的应用场景 四、举例说明 NVMe(Non-Volatile Memory Express)非易失性存储器访问和传输协议 是一种非易失性存储器访问和传输协议,专为固态硬盘(SSD)…...

C++初阶——queue

一、什么是queue 是一个容器适配器,专门设计用于在先进先出(FIFO,First In First Out)的上下文中操作。它是一个容器适配器,这意味着它不是一个完整的容器类,而是封装了一个特定的容器类(如list…...

达梦数据库迁移j脚本

国产环境使用达梦数据库的越来越多&#xff0c;除了使用管理工具&#xff0c;还是可以使用脚本。 下面简单记录下&#xff0c;我在迁移中遇到的问题&#xff1a; 备份脚本 使用此脚本可以一次备份一个数据 backup_one_db.sh #!/bin/bashexport DB$1 export PASS<your_p…...

【Linux】内核调用栈打印函数dump_stack使用效果

init/main.c的start_kernel示例&#xff0c;这个调用栈不太深&#xff1a; /var/log/dmesg日志&#xff1a; [ 0.000000] kernel: [init/main.c start_kernel 911] start_kernel(void) [ 0.000000] kernel: [kernel/panic.c print_tainted 519 LOG_TIMES: 1 ] [ 0.…...

Uniapp踩坑input自动获取焦点ref动态获取实例不可用

前言 大家好我是没钱的君子下流坯&#xff0c;用自己的话解释自己的知识。很久很更新了&#xff0c;这几个月一直在加班&#xff0c;今天记录一个uniapp关于input中focus()方法自动获取焦点的坑。 案例 为了实现一个手机验证码的页面&#xff0c;验证码是五个输入框&#xf…...

数据分析-47-时间序列变点检测之离线历史数据的CPD

文章目录 1 时间序列结构1.1 变化点的定义1.2 结构变化的类型1.2.1 水平变化1.2.2 方差变化1.3 变点检测1.3.1 离线数据检测方法1.3.2 实时数据检测方法2 模拟数据2.1 模拟恒定方差数据2.2 模拟变化方差数据3 离线数据变点检测3.1 Ruptures模块3.2 恒定方差CPD3.3 变化方差CPD4…...

加入GitHub Spark需要申请

目录 加入GitHub Spark需要申请 GitHub Spark 一、产品定位与特点 二、核心组件与功能 三、支持的AI模型 四、应用场景与示例 五、未来展望 六、申请体验 加入GitHub Spark需要申请 GitHub Spark 是微软旗下GitHub在2024年10月30日的GitHub Universe大会上推出的一款革…...

生成式GPT商品推荐:精准满足用户需求

生成式GPT商品推荐&#xff1a;精准满足用户需求 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;电商平台正在逐步迎来一场前所未有的变革。尤其是生成式GPT&#xff08;Generative Pre-trained Transformer&#xff09;技术的应用&#xff0c;正在重新定…...

async 和 await的使用

一、需求 点击按钮处理重复提交&#xff0c;想要通过disabled的方式实现。 但是点击按钮调用的方法里有ajax、跳转、弹窗等一系列逻辑操作&#xff0c;需要等方法里流程都走完&#xff0c;再把disabled设为false&#xff0c;这样下次点击按钮时就可以继续走方法里的ajax等操作…...

Spring Cloud Vault快速入门Demo

1.什么是Spring Cloud Vault&#xff1f; Spring Cloud Vault 是 Spring Cloud 生态系统中的一个项目&#xff0c;旨在简化 Spring 应用程序与 HashiCorp Vault 的集成。它提供了一种方便的方式来管理和访问应用程序的敏感配置数据&#xff0c;如数据库凭证、API 密钥和其他机…...

道陟科技EMB产品开发进展与标准设计的建议|2024电动汽车智能底盘大会

11月12日&#xff0c;2024电动汽车智能底盘大会在重庆开幕。会议由中国汽车工程学会主办&#xff0c;电动汽车产业技术创新战略联盟、中国汽车工程学会智能底盘分会、智能绿色车辆与交通全国重点实验室承办。本届大会围绕电动汽车智能底盘相关技术发展与融合&#xff0c;满足高…...

GitHub Org

运营一个GitHub Org&#xff08;组织&#xff09;是一个复杂但充满价值的过程&#xff0c;它涉及多个方面&#xff0c;包括项目管理、团队协作、代码审查、文档维护、社区建设等。以下是一篇关于如何运营GitHub Org的详细指南&#xff0c;旨在帮助组织者更好地管理和维护其GitH…...

unity小:shaderGraph不规则涟漪、波纹效果

实现概述 在本项目中&#xff0c;我们通过结合 Sine、Polar Coordinates 和 Time 节点&#xff0c;实现了动态波纹效果。以下是实现细节&#xff1a; 核心实现 Sine 波形生成&#xff1a; 使用 Sine 节点生成基本的波形。该节点能够创建周期性变化&#xff0c;为波纹效果提供…...

【JavaScript】JavaScript开篇基础(6)

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…...

Spark RDD、DStream、DataFrame、DataSet 在窗口操作上的区别

Spark RDD、DStream、DataFrame、DataSet 在窗口操作上的区别 1. Spark RDD 是否支持窗口操作&#xff1a; RDD 本身没有专门的窗口操作算子。原因&#xff1a; RDD 是一个弹性分布式数据集&#xff0c;设计为通用的、不可变的操作单元&#xff0c;主要用于批处理场景。窗口函…...

http自动发送请求工具(自动化测试http请求)

点击下载《http自动发送请求工具(自动化测试http请求)》 前言 在现代软件开发过程中&#xff0c;HTTP 请求的自动化测试是确保应用程序稳定性和可靠性的关键环节。为了满足这一需求&#xff0c;我开发了一款功能强大且易于使用的自动化 HTTP 请求发送工具。该工具基于 C# 开发…...

网络IP地址会经常换吗?深入解析与实操指南

在互联网的生态系统中&#xff0c;IP地址&#xff08;Internet Protocol Address&#xff09;是每台连接设备的唯一标识符&#xff0c;它在网络通信中起着至关重要的作用。然而&#xff0c;不少用户观察到自己的IP地址有时会发生变化&#xff0c;这引发了诸多疑问。本文旨在详细…...

Hunyuan-MT-7B翻译神器快速上手:手把手教你搭建多语言翻译服务

Hunyuan-MT-7B翻译神器快速上手&#xff1a;手把手教你搭建多语言翻译服务 1. 为什么选择Hunyuan-MT-7B 在当今全球化时代&#xff0c;多语言翻译需求日益增长。Hunyuan-MT-7B作为腾讯混元团队开源的70亿参数翻译模型&#xff0c;凭借其出色的性能和易用性&#xff0c;成为开…...

Graphviz节点位置控制实战:如何用invis边解决自动排版抽风问题

Graphviz节点位置控制实战&#xff1a;如何用invis边解决自动排版抽风问题 当你用Graphviz自动生成关系图时&#xff0c;是否遇到过节点位置完全不符合预期的情况&#xff1f;比如明明希望节点3出现在节点2的左侧&#xff0c;但生成的图像却总是反着来。这种"抽风"现…...

Qwen1.5-0.5B-Chat实战部署:Docker容器化改造方案

Qwen1.5-0.5B-Chat实战部署&#xff1a;Docker容器化改造方案 本文介绍如何将基于ModelScope的Qwen1.5-0.5B-Chat对话服务进行Docker容器化改造&#xff0c;实现一键部署和跨平台运行。 1. 项目概述与核心价值 Qwen1.5-0.5B-Chat是阿里通义千问开源系列中最轻量的对话模型&…...

MATLAB图像处理实战:5分钟搞定腐蚀膨胀操作(附完整代码)

MATLAB图像形态学处理实战&#xff1a;从原理到代码实现 在数字图像处理领域&#xff0c;形态学操作就像一把精密的"手术刀"&#xff0c;能够对图像进行精细的"雕刻"和"修饰"。无论是去除噪点、填补空洞&#xff0c;还是分离粘连物体&#xff0c…...

Contriever论文精读:手把手拆解对比学习与MoCo如何‘炼成’通用文本嵌入

Contriever技术解析&#xff1a;对比学习与MoCo如何重塑文本嵌入模型 在自然语言处理领域&#xff0c;文本嵌入模型一直是核心基础技术之一。传统的有监督训练方法虽然在某些特定领域表现出色&#xff0c;但当面临跨领域应用时&#xff0c;其性能往往大幅下降。Facebook Resear…...

麦克风效率革命:MicMute让静音操作提速90%的终极体验升级

麦克风效率革命&#xff1a;MicMute让静音操作提速90%的终极体验升级 【免费下载链接】MicMute Mute default mic clicking tray icon or shortcut 项目地址: https://gitcode.com/gh_mirrors/mi/MicMute 你是否经历过线上会议中手忙脚乱寻找静音按钮的窘迫&#xff1f;…...

7个效率倍增技巧:StarRailAssistant自动化工具解放崩坏星穹铁道玩家双手

7个效率倍增技巧&#xff1a;StarRailAssistant自动化工具解放崩坏星穹铁道玩家双手 【免费下载链接】StarRailAssistant 崩坏&#xff1a;星穹铁道自动化 | 崩坏&#xff1a;星穹铁道自动锄大地 | 崩坏&#xff1a;星穹铁道锄大地 | 自动锄大地 | 基于模拟按键 项目地址: ht…...

[特殊字符] Kimi 智能助手完全使用指南:从入门到精通

Kimi 是由月之暗面&#xff08;Moonshot AI&#xff09;开发的国产 AI 智能助手&#xff0c;自发布以来凭借超长上下文窗口、强大的 Agent 能力和多模态交互&#xff0c;成为国内 AI 工具的重要选择。本指南将系统介绍 Kimi 的核心功能、使用技巧及进阶玩法&#xff0c;帮助你充…...

Qwen1.5-1.8B GPTQ开发环境配置:IntelliJ IDEA插件开发初探

Qwen1.5-1.8B GPTQ开发环境配置&#xff1a;IntelliJ IDEA插件开发初探 如果你是一名Java开发者&#xff0c;对AI大模型感兴趣&#xff0c;想在自己的IDE里搞点“智能”新花样&#xff0c;那么你来对地方了。今天我们不聊复杂的模型训练&#xff0c;也不讲高深的算法原理&…...

利用akshare构建涨停板股票数据分析系统

1. 为什么需要涨停板数据分析系统 在股票市场中&#xff0c;涨停板是一个非常重要的信号。当某只股票的价格涨幅达到当日上限时&#xff0c;就会触发涨停机制&#xff0c;这意味着市场对该股票的需求非常旺盛。对于投资者来说&#xff0c;及时捕捉涨停板股票的特征和规律&#…...