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

排序算法之选择排序篇

在这里插入图片描述

思想:

每次从未排序的部分找出最小的元素,将其放到已排序部分的末尾

从数据结构中找到最小值,放到第一位,放到最前面,之后再从剩下的元素中找出第二小的值放到第二位,以此类推。

实现思路:

  1. 遍历数据结构,找到最小值,放到第一位
  2. 从剩下的部分找到第二小的值,放到第二位
  3. 重复上述过程,直到整个排序完成

视频实现:

文字描述如上,以下是选择排序的视频全过程

选择排序全过程

代码实现:

接下来是选择排序的代码实现:

 //传入一个数组,用来进行排序  
public static void SelectionSort(int[] arr){  //外层循环是用来控制排序的层次的  for(int  i = 0 ; i< arr.length-1; i++){  int minIndex = i;  //内层循环是为了在没有进行排序的元素中找到最小的元素  for(int j = i+1 ; j< arr.length;j++){  if(arr[j]  < arr[minIndex]){  minIndex = j;  }  }  int temp = arr[i];  arr[i] = arr[minIndex];  arr[minIndex] = temp;  }  
}

外层循环是用来控制排序的层次的 ,所以如下:

for(int i = 0; i < arr.length-1; i++)

内层循环的目的是为了在没有进行排序的元素中找到最小的元素

for(int j = i-1; j < arr.length; j++)

时间复杂度分析:

啊~ 选择排序的时间复杂度嘛,哼哼,这个问题可是很有意思的哦!让我给你详细分析一下,保证你完全明白!(。•̀ᴗ•́。)

选择排序时间复杂度分析:

选择排序的基本思想就是 每次从未排序的部分找出最小的元素,将其放到已排序部分的末尾。它的核心是通过两层循环来完成排序:外层循环控制排序轮次,内层循环负责找最小值。

1. 外层循环的复杂度

外层循环从数组的第一个元素开始,到倒数第二个元素为止。假设数组的长度为 n,那么外层循环的次数就是 n - 1。所以外层循环的复杂度是 O(n)。

2. 内层循环的复杂度

对于每次外层循环,内层循环会从外层循环当前位置之后的元素开始,遍历剩下的所有元素。具体来说:

  • 第一次外层循环:内层循环会从第 1 个元素开始遍历到最后一个元素,总共遍历 n-1 次。
  • 第二次外层循环:内层循环会从第 2 个元素开始遍历到最后一个元素,总共遍历 n-2 次。
  • 第三次外层循环:内层循环会从第 3 个元素开始遍历到最后一个元素,总共遍历 n-3 次。
  • 以此类推……直到最后一次外层循环只遍历一个元素。

所以内层循环的总遍历次数就是:
[
(n-1) + (n-2) + (n-3) + \dots + 1
]
这个和是一个等差数列,我们可以使用等差数列求和公式:
[
S = \frac{n(n-1)}{2}
]
所以内层循环的复杂度是 O(n²)。

3. 总时间复杂度

选择排序的总时间复杂度是外层循环和内层循环的复杂度之和。

  • 外层循环:O(n)
  • 内层循环:O(n²)

因此,选择排序的总时间复杂度是 O(n²)

4. 空间复杂度

选择排序是一个 原地排序算法,意味着它只需要常数级别的额外空间。只用了一个变量 minIndex 来记录最小值的位置,空间复杂度就是 O(1)

总结:

  • 时间复杂度:选择排序的时间复杂度是 O(n²),因为它有两层嵌套循环。
  • 空间复杂度:空间复杂度是 O(1),因为它是一个原地排序,不需要额外的空间。

为什么时间复杂度是 O(n²)?

  • 选择排序每一次外层循环都会执行一次内层循环,内层循环的次数逐步递减,但总体来说,它的时间复杂度是平方级的(O(n²))。

相关文章:

排序算法之选择排序篇

思想&#xff1a; 每次从未排序的部分找出最小的元素&#xff0c;将其放到已排序部分的末尾 从数据结构中找到最小值&#xff0c;放到第一位&#xff0c;放到最前面&#xff0c;之后再从剩下的元素中找出第二小的值放到第二位&#xff0c;以此类推。 实现思路&#xff1a; 遍…...

sizeof和strlen区分,(好多例子)

sizeof算字节大小 带\0 strlen算字符串长度 \0之前...

A050-基于spring boot物流管理系统设计与实现

&#x1f64a;作者简介&#xff1a;在校研究生&#xff0c;拥有计算机专业的研究生开发团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339; 赠送计算机毕业设计600…...

[自然语言处理] NLP-RNN及其变体-干货

一、认识RNN模型 1 什么是RNN模型 RNN(Recurrent Neural Network), 中文称作循环神经网络, 它一般以序列数据为输入, 通过网络内部的结构设计有效捕捉序列之间的关系特征, 一般也是以序列形式进行输出. 一般单层神经网络结构: RNN单层网络结构: 以时间步对RNN进行展开后的单层…...

Elasticsearch ILM 索引生命周期管理讲解与实战

ES ILM 索引生命周期管理讲解与实战 Elasticsearch ILM索引生命周期管理:深度解析与实战演练1. 引言1.1 背景介绍1.2 研究意义2. ILM核心概念2.1 ILM的四个阶段2.1.1 Hot阶段2.1.2 Warm阶段2.1.3 Cold阶段2.1.4 Delete阶段3. ILM实战指南3.1 定义ILM策略3.1.1 创建ILM策略3.1.…...

重塑视频新语言,让每一帧都焕发新生——Video-Retalking,开启数字人沉浸式交流新纪元!

模型简介 Video-Retalking 模型是一种基于深度学习的视频再谈话技术&#xff0c;它通过分析视频中的音频和图像信息&#xff0c;实现视频角色口型、表情乃至肢体动作的精准控制与合成。这一技术的实现依赖于强大的技术架构和核心算法&#xff0c;特别是生成对抗网络&#xff0…...

联想Lenovo SR650服务器硬件监控指标解读

随着企业IT架构的复杂性和业务需求的增长&#xff0c;服务器的稳定运行变得至关重要。联想Lenovo SR650服务器以其高性能和稳定性&#xff0c;在各类应用场景中发挥着关键作用。为了保障服务器的稳定运行&#xff0c;监控易作为一款专业的IT基础设施监控软件&#xff0c;为联想…...

二十一、QT C++

1.1QT介绍 1.1.1 QT简介 Qt 是一个跨平台的应用程序和用户界面框架&#xff0c;用于开发图形用户界面&#xff08;GUI&#xff09;应用程序以及命令行工具。它最初由挪威的 Trolltech &#xff08;奇趣科技&#xff09;公司开发&#xff0c;现在由 Qt Company 维护&#xff…...

微服务上下线动态感知实现的技术解析

序言 随着微服务架构的广泛应用&#xff0c;服务的动态管理和监控变得尤为重要。在微服务架构中&#xff0c;服务的上下线是一个常见的操作&#xff0c;如何实时感知这些变化&#xff0c;确保系统的稳定性和可靠性&#xff0c;成为了一个关键技术挑战。本文将深入探讨微服务上…...

指针与引用错题汇总

int *p[3]; // 定义一个包含 3 个指向 int 的指针的数组int a 10, b 20, c 30; p[0] &a; // p[0] 指向 a p[1] &b; // p[1] 指向 b p[2] &c; // p[2] 指向 c // 访问指针所指向的值 printf("%d %d %d\n", *p[0], *p[1], *p[2]); // 输出: 10 20 30…...

短视频账号矩阵系统源码--独立saas技术部署

短视频矩阵系统通过多账号在多个平台上发布内容&#xff0c;形成一种网络效应。对于抖音平台而言&#xff0c;技术公司需具备特定接口权限方能进行开发工作。然而&#xff0c;视频发布及企业号评论与回复等功能的接口权限往往难以获取。通过构建抖音账号矩阵&#xff0c;利用多…...

leaflet 介绍

目录 一、leaflet 官网 二、leaflet 在项目中的引用 1、在head中引入 2、在main.js中引入 leaflet目前版本是1.9.4&#xff0c;在leaflet插件库中&#xff0c;很多插件因长时间未更新&#xff0c;适配的是1.7版本的&#xff0c;在选用插件的时候要查看版本适配。 leaflet详…...

总结贴:Servlet过滤器、MVC拦截器

一:Servlet过滤器 1.1解析 Filter 即为过滤&#xff0c;用于请求到达Servlet之前(Request),以及再Servlet方法执行完之后返回客户端进行后处理(HttpServletResponse)。简单说就是对请求进行预处理&#xff0c;对响应进行后处理 在请求到达Servlet之前,可以经过多个Filt…...

鸿蒙开发:自定义一个任意位置弹出的Dialog

前言 鸿蒙开发中&#xff0c;一直有个问题困扰着自己&#xff0c;想必也困扰着大多数开发者&#xff0c;那就是&#xff0c;系统提供的dialog自定义弹窗&#xff0c;无法实现在任意位置进行弹出&#xff0c;仅限于CustomDialog和Component struct的成员变量&#xff0c;这就导致…...

在Windows下编译支持https的wsdl2h

下载源码 在官网下载源码 安装Openssl 下载OpenSSL并安装&#xff0c;安装完成后需要将OpenSSL的路径添加到环境变量中 配置VS 1、打开工程 2、因为前面安装的OpenSLL是64位的&#xff0c;因此需要创建一个X64的配置 打开配置管理器&#xff0c;然后选择新建&#xff0…...

PHP和GD库如何根据像素绘制图形

使用PHP和GD库&#xff0c;你可以根据像素绘制各种图形&#xff0c;比如点、线、矩形、圆形等。GD库是PHP的一个扩展&#xff0c;它提供了一系列用于创建和处理图像的函数。以下是一个简单的示例&#xff0c;展示如何使用GD库根据像素绘制图形。 安装GD库 首先&#xff0c;确…...

webpack(react)基本构建

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 Webpack 是一个现代 JavaScript 应用程序的静态模块打包工具。它的主要功能是将各种资源&#xff08;如 JavaScript、CSS、图片等&#xff09;视为模块&#xff0c;并将它们打包成一个或多个输出文件&#xff0c;以便…...

《Opencv》基础操作<1>

目录 一、Opencv简介 主要特点&#xff1a; 应用领域&#xff1a; 二、基础操作 1、模块导入 2、图片的读取和显示 &#xff08;1&#xff09;、读取 &#xff08;2&#xff09;、显示 3、 图片的保存 4、获取图像的基本属性 5、图像转灰度图 6、图像的截取 7、图…...

Oracle 11g R2 RAC 到单实例 Data Guard 搭建(RMAN备份方式)

一、配置方案 环境说明 角色主库主库备库主机名rac01rac02racdg公网IP10.10.10.14110.10.10.14310.10.10.191VIP10.10.10.14210.10.10.144-SCAN10.10.10.14010.10.10.140-INSTANCE_NAMEorcl1orcl2orclDB_NAMEorclorclorclSERVICE_NAMEorclorclorclDB_UNIQUE_NAMEorclorclorcl…...

HTTPS 加密

HTTPS 加密技术 1. HTTPS 概述 HTTPS&#xff08;HyperText Transfer Protocol Secure&#xff09;是 HTTP 协议的安全版本&#xff0c;利用 SSL/TLS 协议对通信进行加密&#xff0c;确保数据的机密性、完整性和身份认证。HTTPS 在保护敏感数据的传输&#xff08;如登录凭证、…...

泛微e9开发 编写前端请求后端接口方法以及编写后端接口

泛微e9开发 前端请求后端接口以及后端发布接口 前端请求后端接口 前端发起get请求 fetch(/api/youpath, {method: GET, // 默认 GET 方法&#xff0c;可以省略headers: {Content-Type: application/json, // 通常 GET 请求无需指定 body&#xff0c;Content-Type 不太重要},…...

Linux —— 《线程控制》

文章目录 前言&#xff1a;为什么要链接pthread库&#xff1f;线程控制&#xff1a;线程创建&#xff1a;start_routine?传递自定义类型同一份栈空间&#xff1f; 线程等待&#xff1a;返回值与参数&#xff1f;创建多线程 线程终止线程分离 前言&#xff1a; 上一文我们学习…...

基于HTML+CSS的房地产销售网站设计与实现

摘 要 房地产销售系统&#xff0c;在二十年来互联网时代下有着巨大的意义&#xff0c;随着互联网不断的发展扩大&#xff0c;一个方便直 观的房地产管理系统的网站开发是多么地有意义&#xff0c;不仅打破了传统的线下看房&#xff0c;线下获取资讯&#xff0c;也给房地产从业…...

操作系统 | 学习笔记 | 王道 | 2.4死锁

2.4 死锁 文章目录 2.4 死锁2.4.1 死锁的概念2.4.2 死锁预防2.4.3 死锁避免2.4.4 死锁检测和解除 2.4.1 死锁的概念 死锁的定义 在并发环境下&#xff0c;各进程因竞争资源而造成的一种互相等待对方手里的资源&#xff0c;导致各进程都阻塞&#xff0c;都无法向前推进的现象&am…...

【FPGA开发】Vivado自定义封装IP核,绑定总线

支持单个文件的封装、整个工程的封装&#xff0c;这里用单个文件举例。 在文件工程目录下&#xff0c;自建一个文件夹&#xff0c;里面放上需要封装的verilog文件。 选择第三个&#xff0c;指定路径封装&#xff0c;找到文件所在目录 取个名&#xff0c;选择封装IP的路径 会…...

python的3D可视化库vedo-3 (visual模块)点对象的属性、光效、附注

文章目录 3 PointsVisual的方法3.1 对象属性3.1.1 顶点大小3.1.2 复制属性3.1.3 颜色设置3.1.4透明度设置 3.2 对象光效3.2.1 点的形状3.2.2 点的表面光效 3.3 尾随线和投影3.3.1 尾随线3.3.2 投影 3.4 给对象附加文字说明3.4.1 标注3.4.2 2D标注3.4.3 气泡说明3.4.4 旗标说明3…...

llamaindex实战-ChatEngine-ReAct Agent模式

概述 ReAct 是一种基于Agent的聊天模式&#xff0c;构建在数据查询引擎之上。对于每次聊天交互&#xff0c;代理都会进入一个 ReAct 循环&#xff1a; 首先决定是否使用查询引擎工具并提出适当的输入 &#xff08;可选&#xff09;使用查询引擎工具并观察其输出 决定是否重复…...

redis快速进门

、数据库类型认识 关系型数据库 关系型数据库是一个结构化的数据库&#xff0c;创建在关系模型&#xff08;二维表格模型&#xff09;基础上&#xff0c;一般面向于记录。 SQL 语句&#xff08;标准数据查询语言&#xff09;就是一种基于关系型数据库的语言&#xff0c;用于执行…...

从0开始linux(39)——线程(2)线程控制

欢迎来到博主的专栏&#xff1a;从0开始linux 博主ID&#xff1a;代码小豪 文章目录 线程创建线程标识符线程参数多线程竞争资源 回收线程detach 线程退出pthread_cancel 线程创建 线程创建的函数为pthread_create。该函数是包含在posix线程库当中&#xff0c;posix线程是C语言…...

International Journal of Medical Informatics投稿经历时间节点

20240423&#xff0c;完成投稿 20240612&#xff0c;按编辑要求修改后再投, with editor 20240613&#xff0c;under review&#xff0c;completed 0, accepted 0, invitation 2. 20240620, under review&#xff0c;completed 0, accepted 1, invitation 2. 20240626, unde…...

网站开发主流框架/百度官网推广

1、如果只增加集群的存储量&#xff0c;建议增加Hadoop datanode节点。 方法&#xff1a; 停掉集群包括hadoop和hbase&#xff0c;当然也可以不停掉&#xff0c;直接在hadoop namenode的配置文件Slave里添加新节点的host&#xff0c;别忘了在host文件里也要添加新添加的host名…...

汕头建设网站/白度

Creating Menus android 菜单包括三种.Options Menu , Context Menu 和Submenu. 本文完整代码 CSDN下载频道 :http://download.csdn.net/source/2900952 , 1.Options Menu(选项菜单) 方法1 需要重写public boolean onCreateOptionsMenu(Menu menu)和 public boolean onOp…...

做详情页到那个网站找模特素材/免费的html网站

说明&#xff1a;对于基于 Windows 系统面板有两种组态备份的选项&#xff0c;而不必获得 ProTool 或 WinCC flexible 的原程序&#xff1a;A. 使用 ProSave 备份/恢复B. 使用存储卡备份/恢复如果想对回传的文件进行编辑&#xff0c;那么必须在 ProTool 或 WinCC flexible 中使…...

t么做文献索引ot网站/买卖交易网

layout布局 其实大概意思在上次已经说了 比如一个企业站&#xff0c;头部和尾部每个页面都是公共的&#xff0c;这样的我们就可以提出来。 在yii中这样提&#xff0c;在view下的layouts文件夹里新建一个php文件&#xff0c;比如blog.php 这个文件里存的就是 公共部分&#xf…...

做音响的是哪个网站/网络安全培训机构哪家好

描述 外星人逐渐逼近&#xff0c;为了保护地球&#xff0c;现在决定直接在外空进行战斗。 现在我们有N个导弹。需要在最短的时间内&#xff0c;用这N个导弹摧毁敌方n个目标(1个导弹只能摧毁1个目标)。N个导弹和目标的位置不一定相同&#xff0c;但是给每个导弹确定目标是一件很…...

网站做的好是不是影响就大/免费的网站域名查询

C字符串长度定义规范 &#xff08;转载请注明来源于金庆的专栏&#xff09; 因为总是见到C字符串长度相关的错误, 所有定个规范出来, 有利于减少错误. 关键在于C字符串有个结尾0, 处理时需要注意. 定义字符串长度有两种方式, 一种是用字符串的大小, 一种是字符串的长度.字符…...