重温经典算法——选择排序

article/2025/9/9 5:05:58

版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址:http://blog.csdn.net/lfdfhl

在这里插入图片描述

基本原理

选择排序属于简单的原地排序算法,通过将待排序序列分为已排序和未排序两部分,每次从未排序部分选择最小元素,与未排序部分的起始位置交换,逐步扩大已排序范围。其核心操作是“选择最小元素并固定位置”,时间复杂度始终为 O(n²)(无论数据是否有序),空间复杂度为 O(1),属于不稳定排序(如对 [5, 5, 3] 排序可能破坏相同元素的原始顺序),适用于小规模数据或内存敏感的场景。

代码实现

import java.util.Arrays;public class SelectionSort {public static void selectionSort(int[] arr) {int n = arr.length;for (int i = 0; i < n - 1; i++) { // 外层循环:控制已排序部分的末尾位置int minIndex = i; // 记录当前未排序部分的最小值索引// 内层循环:遍历未排序部分,找到最小值索引for (int j = i + 1; j < n; j++) {if (arr[j] < arr[minIndex]) {minIndex = j; // 更新最小值索引}}// 将最小值交换到已排序部分的末尾if (minIndex != i) { // 避免无效交换int temp = arr[i];arr[i] = arr[minIndex];arr[minIndex] = temp;}}}public static void main(String[] args) {int[] arr = {64, 25, 12, 22, 11};selectionSort(arr);System.out.println("Sorted array: " + Arrays.toString(arr));// 输出:Sorted array: [11, 12, 22, 25, 64]}
}

http://www.hkcw.cn/article/fHUxWteVjA.shtml

相关文章

RFID测温芯片助力新能源产业安全与能效提升

在“双碳”目标驱动下&#xff0c;新能源产业正经历爆发式增长。无论是电动汽车、储能电站还是风光发电场&#xff0c;设备安全与能效提升始终是行业核心命题。而温度&#xff0c;这个看似普通的物理参数&#xff0c;却成为破解这一命题的关键密码。RFID测温芯片&#xff08;集…

数据的类型——认识你的数据

第02篇&#xff1a;数据的类型——认识你的数据 写在前面&#xff1a;嗨&#xff0c;大家好&#xff01;我是蓝皮怪。在上一篇文章中&#xff0c;我们聊了统计学的基本概念&#xff0c;今天我们来深入了解一个非常重要的话题——数据的类型。你可能会想&#xff1a;"数据就…

【JVM】初识JVM 从字节码文件到类的生命周期

初识JVM JVM&#xff08;Java Virtual Machine&#xff09;即 Java 虚拟机&#xff0c;是 Java 技术的核心组件之一。JVM的本质就是运行在计算机上的一个程序&#xff0c;通过软件模拟实现了一台抽象的计算机的功能。JVM是Java程序的运行环境&#xff0c;负责加载字节码文件&a…

WebVm:无需安装,一款可以在浏览器运行的 Linux 来了

WebVM 是一款可以在浏览器中运行的Linux虚拟机。不是那种HTMLJavaScript模拟的UI&#xff0c;完全通过HTML5/WebAssembly技术实现客户端运行。通过集成CheerpX虚拟化引擎&#xff0c;可直接在浏览器中运行未经修改的Debian系统。 Stars 数13054Forks 数2398 主要特点 完整 Lin…

动态规划-931.下降路径最小和-力扣(LeetCode)

一、题目解析 从最顶上出发&#xff0c;有三个位置选择&#xff0c;左中下(边界除外)&#xff0c;使其走到最下面时下降路径最小。 二、算法原理 1、状态表示 我们需要的是到达[i,j]的最小路径和&#xff0c;所以此时dp[i][j]表示&#xff1a;到达[i,j]位置时&#xff0c;最…

ssm学习笔记(尚硅谷) day1

创建新项目 maven的聚合 1. 标记父类项目 标签<packaging>pom</packaging>表示将该项目标记为父类项目&#xff0c;必须添加。 以下是标签<packing>的常见取值 groupId在pom.xml中&#xff0c;可以从pom.xml直接修改。 2. 通过<modules>添加子项目…

数据库 | 时序数据库选型

选型目标 高性能与低延迟&#xff1a;满足高频率数据写入与即时查询的需求。资源效率&#xff1a;优化存储空间使用&#xff0c;减少计算资源消耗。可扩展架构&#xff1a;支持数据量增长带来的扩展需求&#xff0c;易于维护。社区活跃度&#xff1a;有活跃的开发者社区&#…

Linux | Shell脚本的基础知识

一. 定义 1.1 什么是shell脚本 shell脚本是一种可运行的文本shell脚本的内容是由逻辑和数据组成shell脚本是解释型语言 命令不可单独执行&#xff0c;由解释器将代码转换为系统指令&#xff0c;系统接受指令后执行速度比编译型语言慢&#xff0c;优点是简单&#xff0c;开发效…

Window Server 2019--09 路由和桥接的设置

本章要点 >>了解路由器工作原理。 >>掌握路由与远程访问服务的设置。 >>掌握桥接的设置。 路由器(Router)是网络中的核心设备&#xff0c;它工作在开放系统互连(Open SystemInter- connection&#xff0c;OSI)网络参考模型的网络层(第3层),用于连接多个在…

国芯思辰| 霍尔电流传感器AH811为蓄电池负载检测系统安全护航

在电动车、储能电站、不间断电源&#xff08;UPS&#xff09;等设备中&#xff0c;蓄电池作为关键的储能单元&#xff0c;其运行状态直接关系到设备的稳定性和使用寿命。而准确监测蓄电池的负载情况&#xff0c;是保障其安全、高效运行的关键。霍尔电流传感器 AH811凭借独特的技…

如何构建高效的接口自动化测试框架(全)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 在选择接口测试自动化框架时&#xff0c;需要根据团队的技术栈和项目需求来综合考虑。对于测试团队来说&#xff0c;使用Python相关的测试框架更为便捷。无论选择…

Redis Stack常见拓展

Redis JSON RedisJSON 是 Redis Stack 提供的模块之一&#xff0c;允许你以 原生 JSON 格式 存储、检索和修改数据。相比传统 Redis Hash&#xff0c;它更适合结构化文档型数据&#xff0c;并支持嵌套结构、高效查询和部分更新。 #设置⼀个JSON数据,其中$表示JSON数据的根节点…

Java AQS(Abstract Queued Synchronized)深度解析

一、AQS概述 AQS是Java并发包中的核心框架&#xff0c;为构建锁和同步器提供了基础实现。它是JUC&#xff08;java.util.concurrent&#xff09;包中大多数同步类的基石&#xff0c;如ReentrantLock、Semaphore、CountDownLatch等都基于AQS实现。 1.1 AQS核心思想 AQS的核心…

建筑节能要求趋严,楼宇自控技术独特优势愈发清晰可辨

在全球应对气候变化、积极推进 “双碳” 目标的大背景下&#xff0c;建筑行业作为能源消耗的 “大户”&#xff0c;面临着日益严苛的节能要求。从国家相继出台的建筑节能设计标准&#xff0c;到地方推行的能耗限额管理政策&#xff0c;都在倒逼建筑行业探索更高效的节能路径。传…

TCP连接关闭过程的技术解析:从四次挥手到资源释放

一、引言 TCP&#xff08;传输控制协议&#xff09;作为面向连接的可靠传输协议&#xff0c;其连接的建立与终止过程均需严格遵循规范。本文基于实际抓包数据&#xff0c;深入分析客户端与服务端在数据传输后的连接关闭过程&#xff0c;聚焦四次挥手&#xff08;Four-Way Hand…

人工智能浪潮下,制造企业如何借力DeepSeek实现数字化转型?

一、DeepSeek技术概述 DeepSeek&#xff0c;凭借其强大的深度学习和自然语言处理能力&#xff0c;能够理解复杂问题并提供精准解决方案。它不仅能够作为学习、工作、生活的助手&#xff0c;满足用户在不同场景下的需求&#xff0c;更能在制造业中发挥重要作用。通过自然语言交…

知识隔离的视觉-语言-动作模型:训练更快、运行更快、泛化更好

25年5月来自PI的论文“Knowledge Insulating Vision-Language-Action Models: Train Fast, Run Fast, Generalize Better”。 视觉-语言-动作 (VLA) 模型通过将端到端学习与来自网络规模视觉-语言模型 (VLM) 训练的语义知识迁移相结合&#xff0c;为机器人等物理系统训练控制策…

Java实现命令行图书管理系统(附完整源码)

一、项目概述 本文将介绍如何使用Java实现一个基于命令行的图书管理系统。系统支持管理员和普通用户两种角色&#xff0c;提供图书的增删改查、借阅归还等功能。项目采用面向对象设计原则&#xff0c;代码结构清晰&#xff0c;适合Java初学者学习。 二、系统功能架构 graph T…

pyinstaller 使用 控制台闪退解决办法

pyinstaller --noconfirm --clean websoket.py --onefile pip install pyinstaller py地址不要带中文 install时的python版本要和文件的环境python版本一样 if __name__ "__main__": print("Starting WebSocket server at ws://0.0.0.0:5000/ws") p…

首发!PPIO派欧云上线DeepSeek-R1-0528-Qwen3-8B蒸馏模型

首发&#xff01;PPIO派欧云上线DeepSeek-R1-0528-Qwen3-8B蒸馏模型 DeepSeek R1 系列的模型更新还在继续。 继昨天 PPIO派欧云首发上线 DeepSeek-R1-0528 模型后&#xff0c;今天 PPIO 再次首发 DeepSeek 最新开源的蒸馏模型 DeepSeek-R1-0528-Qwen3-8B。 DeepSeek-R1-0528-Q…