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

Java中常用算法之选择排序算法

一.选择排序(Selection Sort)是一种简单直观的排序算法。它的工作原理是每次从未排序部分选择最小(或最大)的元素,并将其放到已排序部分的末尾。以下是用Java实现选择排序的代码及其详细讲解。

二.选择排序代码

public class SelectionSort {public static void selectionSort(int[] array) {int n = array.length;// 外层循环遍历数组的每个元素for (int i = 0; i < n - 1; i++) {// 假设当前元素是未排序部分的最小值int minIndex = i;// 内层循环寻找未排序部分的最小值for (int j = i + 1; j < n; j++) {if (array[j] < array[minIndex]) {minIndex = j;}}// 将找到的最小值与未排序部分的第一个元素交换int temp = array[minIndex];array[minIndex] = array[i];array[i] = temp;}}public static void main(String[] args) {int[] array = {64, 25, 12, 22, 11};System.out.println("Unsorted array:");printArray(array);selectionSort(array);System.out.println("Sorted array:");printArray(array);}private static void printArray(int[] array) {for (int value : array) {System.out.print(value + " ");}System.out.println();}
}

三.详细讲解

1. 初始化:

  • n是数组的长度。

2. 外层循环:

  • 遍历数组的每个元素,i表示当前已排序部分的末尾。
  • 假设当前元素array[i]是未排序部分的最小值,初始化minIndex为i。

3. 内层循环:

  • 从i+1开始遍历未排序部分,寻找最小值。
  • 如果找到比当前最小值array[minIndex]更小的元素,则更新minIndex。

4. 交换元素:

  • 将找到的最小值array[minIndex]与未排序部分的第一个元素array[i]交换。
  • 使用一个临时变量temp来交换两个元素的位置。

5. 打印数组:

  • printArray方法用于打印数组的内容。

总结

选择排序的时间复杂度为O(n²),因为在最坏情况下需要进行n²次比较。选择排序的优点是它的实现简单,并且在某些情况下(如内存写入次数较少时)可能比其他O(n²)排序算法更有效。然而,它的效率不如更复杂的排序算法(如快速排序、归并排序)高。选择排序适合用于小规模数据集或对稳定性要求不高的场合。

相关文章:

Java中常用算法之选择排序算法

一.选择排序&#xff08;Selection Sort&#xff09;是一种简单直观的排序算法。它的工作原理是每次从未排序部分选择最小&#xff08;或最大&#xff09;的元素&#xff0c;并将其放到已排序部分的末尾。以下是用Java实现选择排序的代码及其详细讲解。 二.选择排序代码 publ…...

UNIX简史

从1991年Linux出现至今&#xff0c;由于众多IT巨头以及技术社区的推动&#xff0c;Linux已经成为非常成熟、可用于各种关键领域的操作系统&#xff0c;适当了解其发展历史&#xff0c;对于理顺其技术流派、从而更好地学习和使用Linux具有重要意义。由于其基于UNIX系统二十多年的…...

React和Vue中暴露子组件的属性和方法给父组件用,并且控制子组件暴露的颗粒度的做法

React 在 React 中&#xff0c;forwardRef 是一种高级技术&#xff0c;它允许你将 ref 从父组件传递到子组件&#xff0c;从而直接访问子组件的 DOM 节点或公开的方法。这对于需要操作子组件内部状态或 DOM 的场景非常有用。为了使子组件能够暴露其属性和方法给父组件&#xf…...

uniapp 常用的指令语句

uniapp 是一个使用 Vue.js 开发的跨平台应用框架&#xff0c;因此&#xff0c;它继承了 Vue.js 的大部分指令。以下是一些在 uniapp 中常用的 Vue 指令语句及其用途&#xff1a; v-if / v-else-if / v-else 条件渲染。v-if 有条件地渲染元素&#xff0c;v-else-if 和 v-else 用…...

python学opencv|读取图像(十四)BGR图像和HSV图像通道拆分

【1】引言 前序已经对BGR图像和HSV图像的转换进行了基本讨论&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;十二&#xff09;BGR图像转HSV图像-CSDN博客 python学opencv|读取图像&#xff08;十三&#xff09;BGR图像和HSV图像互相转换深入-C…...

C# 结构体和类

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、类&#xff08;Class&#xff09;二、结构体&#xff08;Struct&#xff09;示例代码&#xff08;定义类和结构体&#xff09;类的继承代码示例&#xff08…...

D9741是一块脉宽调制方三用于也收路像机和笔记本电的等设备上的直流转换器。在便携式的仪器设备上。

概述&#xff1a; D9741是一块脉宽调制方三用于也收路像机和笔记本电的等设备上的直流转换器。在便携式的仪器设备上。 主要特点&#xff1a; ● 高精度基准电路 ● 定时闩锁、短路保护电路 ● 低电压输入时误操作保护电路 ● 输出基准电压(2.5V) ● 超过工作范围能进行自动校…...

题目 1738: 排序

题目 1738: 排序 时间限制: 2s 内存限制: 96MB 提交: 14351 解决: 3477 题目描述 对输入的n个数进行排序并输出。 输入格式 输入的第一行包括一个整数n(1<n<100)。 接下来的一行包括n个整数。 输出格式 可能有多组测试数据&#xff0c;对于每组数据&#xff0c;将排序后…...

爬虫逆向学习(十四):分享一下某数通用破解服务开发经验

阅前须知 这篇博客不是教大家怎么实现的&#xff0c;而且告知大家有这个东西&#xff0c;或者说一种趋势&#xff0c;借此分享自己大致的实现经验。具体的实现我也不好整理&#xff0c;毕竟是在别人的基础上缝缝补补。 前言 使用补环境方式破解过某数的同学都知道&#xff0…...

《Vue进阶教程》第十一课:响应式系统介绍

1 什么是响应式 当数据改变时, 引用数据的函数会自动重新执行 2 手动完成响应过程 首先, 明确一个概念: 响应式是一个过程, 这个过程存在两个参与者: 一方触发, 另一方响应 比如说, 我们家小胖有时候不乖, 我会打他, 他会哭. 这里我就是触发者, 小胖就是响应者 同样, 所谓…...

rpc设计的再次思考20251215(以xdb为核心构建游戏框架)

1.服务提供者注册的方式 // 表明这是一个服务提供者&#xff0c;ServerType 和 ServerId从application.properties中读取 // 而且只有当当前服务是Game时&#xff0c;才生效。 或者 条件注解??? RpcProvider(typeServerType.Game) public class GameProvider{MsgReceiver…...

pydub AudioSegment增加音频文件音量并保存- python 实现

DataBall 助力快速掌握数据集的信息和使用方式&#xff0c;会员享有 百种数据集&#xff0c;持续增加中。 需要更多数据资源和技术解决方案&#xff0c;知识星球&#xff1a; “DataBall - X 数据球(free)” -------------------------------------------------------------…...

IT 新突破!远程控制电脑技术造就工作与学习新方向!

远程控制电脑技术的历史可追溯到计算机网络的早期时代。最初&#xff0c;通过电话线和调制解调器的组合&#xff0c;实现了远程访问&#xff0c;这是远程控制电脑技术的雏形。随着互联网技术的飞速发展&#xff0c;远程控制电脑技术也日趋完善&#xff0c;并在多个领域得到了广…...

LabVIEW起落架震台检测

在现代飞机制造与维护过程中&#xff0c;起落架的性能测试是保障飞机安全的重要环节。通过LabVIEW开发的起落架小落震台检测系统&#xff0c;通过模拟飞机着陆过程&#xff0c;准确捕捉起落架在着陆时承受的各种动力学特性和应力响应&#xff0c;有效提升起落架设计的精度与可靠…...

Day24 C++ 接口(抽象类)

C 接口&#xff08;抽象类&#xff09; 接口描述了类的行为和功能&#xff0c;而不需要完成类的特定实现。 C 接口是使用抽象类来实现的&#xff0c;抽象类与数据抽象互不混淆&#xff0c;数据抽象是一个把实现细节与相关的数据分离开的概念。 如果类中至少有一个函数被声明…...

UE5 关于画质、机能与开发成本的思考

1、并不省时间 UE5等工具优点是可以通过一些工具与资源快速获得较好的画面&#xff0c;节约一些时间&#xff0c; 但缺点也很多&#xff0c; 一个是各种精度的素材之间的协调问题&#xff0c;参差不齐&#xff0c;统一升级到高精度会产生较大的成本&#xff0c; 一个是资源…...

IOS学习路线图

‌iOS是由苹果公司开发的移动操作系统。 苹果公司最早于2007年1月9日的Macworld大会上公布这个系统&#xff0c;最初是设计给iPhone使用的&#xff0c;后来陆续套用到iPod touch、iPad上。iOS与苹果的macOS操作系统一样&#xff0c;属于类Unix的商业操作系统。原本这个系统名为…...

HICE-day6

二层交换 交换基础 所谓的二层交换机指的是针对数据的二层头部&#xff08;以太网帧头&#xff09;中的MAC地址进行寻址并转发数据的交换设备。二层交换机不具备路由功能&#xff0c;它工作在OSI七层模型的第二层&#xff0c;因此被称为二层交换机。 上图中&#xff0c;PC1、…...

第100+33步 ChatGPT学习:时间序列EMD-ARIMA-LSTM模型

基于Python 3.9版本演示 一、写在前面 上一节&#xff0c;我们学了经验模态分解&#xff08;Empirical Mode Decomposition&#xff0c;EMD&#xff09;。 如同结尾所说&#xff0c;“那么&#xff0c;做这些分解有什么作用呢&#xff1f;有大佬基于这些分解出来的序列分别作…...

(C语言)双向链表

目录 链表的分类 双向链表的实现 1&#xff09;定义链表 2&#xff09;初始化双向链表 3&#xff09;申请节点 4&#xff09;尾插 5&#xff09;头插 6&#xff09;打印链表 7&#xff09;尾删 8&#xff09;头插 9&#xff09;查找 10&#xff09;指定位置删除 11…...

3分钟掌握UnityPackage Extractor:无需Unity轻松提取资源包

3分钟掌握UnityPackage Extractor&#xff1a;无需Unity轻松提取资源包 【免费下载链接】unitypackage_extractor Extract a .unitypackage, with or without Python 项目地址: https://gitcode.com/gh_mirrors/un/unitypackage_extractor 你是否曾因需要查看Unity资源包…...

别再死记硬背了!用一张图+一个案例彻底搞懂PROFIBUS-DP的令牌环与主从通信

工业现场通信革命&#xff1a;从零图解PROFIBUS-DP令牌环与主从机制 第一次接触PROFIBUS-DP协议文档时&#xff0c;那些晦涩的术语和抽象的状态转换图让我在调试现场设备时屡屡碰壁。直到某天亲眼目睹PLC通过一串神秘的数据包精准控制阀门阵列&#xff0c;才意识到这套诞生于上…...

从COCO到自定义:用Labelme为YOLOv8-Pose制作关键点数据集的完整避坑指南

从COCO到自定义&#xff1a;用Labelme为YOLOv8-Pose制作关键点数据集的完整避坑指南 在计算机视觉领域&#xff0c;关键点检测技术正逐渐成为工业界和学术界的热点研究方向。不同于传统的目标检测任务&#xff0c;关键点检测不仅需要定位物体位置&#xff0c;还要精确识别物体内…...

W5500 TCP客户端开发避坑指南:从寄存器配置到稳定通信的5个关键步骤

W5500 TCP客户端开发避坑指南&#xff1a;从寄存器配置到稳定通信的5个关键步骤 在嵌入式网络通信领域&#xff0c;W5500作为一款硬件集成TCP/IP协议栈的以太网控制器&#xff0c;因其易用性和稳定性备受开发者青睐。然而&#xff0c;当项目从实验室demo转向实际部署时&#xf…...

AI教材写作超强攻略:借助工具3天完成25万字,低查重有保障!

许多教材编写者常常感到遗憾&#xff0c;尽管他们花费大量时间打磨正文内容&#xff0c;但缺乏配套资源却使得教学效果受限。想要设计出有层次的课后练习&#xff0c;却常常缺少创新的想法&#xff1b;虽然希望制作直观的教学课件&#xff0c;但又缺乏相关的技术能力&#xff1…...

智慧工业轮胎X光图像金属与结构缺陷检测数据集VOC+YOLO格式896张11类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件)图片数量(jpg文件个数)&#xff1a;896标注数量(xml文件个数)&#xff1a;896标注数量(txt文件个数)&#xff1a;896标注类别数&…...

别再死记硬背了!用打王者荣耀掉帧的例子,5分钟搞懂视频编码里的I/P/B帧

游戏卡顿背后的秘密&#xff1a;用王者荣耀掉帧理解视频编码中的I/P/B帧 当你正沉浸在王者荣耀的激烈团战中&#xff0c;手指在屏幕上飞速滑动&#xff0c;准备释放关键技能时&#xff0c;画面突然卡顿——右上角的FPS数值从60骤降到20。这种令人抓狂的体验背后&#xff0c;隐藏…...

WCHUsbSerTest:串口批量自动化测试工具的原理、配置与生产实践

1. 项目概述&#xff1a;为什么我们需要一个专用的串口批量测试工具&#xff1f;在嵌入式硬件开发、工业控制或者物联网设备的生产线上&#xff0c;USB转串口芯片和模块是连接PC与目标设备最常用、最基础的桥梁。无论是给单片机烧录程序&#xff0c;还是与PLC、传感器进行数据交…...

金融项目实战:用sm-crypto为你的Vue/React前端和Node后端加上国密‘安全锁’

金融级数据安全实战&#xff1a;基于SM国密算法的前后端全链路加密方案 在金融科技和政务系统等对数据安全有严格要求的领域&#xff0c;国密算法&#xff08;SM系列算法&#xff09;正逐渐成为行业标配。不同于传统的AES、RSA等国际通用算法&#xff0c;国密算法针对中文环境进…...

【广东工业大学主办,阿布扎比大学支持举办 | JPCS 出版|EI,Scopus稳定双检索 | 连续多年EI稳定见刊检索】 第十届能源、环境与材料科学国际学术会议(EEMS 2026)

第十届能源、环境与材料科学国际学术会议(EEMS 2026&#xff09; 2026 10th International Conference on Energy, Environment and Materials Science 大会时间&#xff1a;2026年7月10-12日 大会地点&#xff1a;广东广州 会议官网&#xff1a;​​​​​​www.ic-eems…...