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

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


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址: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]}
}

相关文章:

  • 互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景
  • [Dify] Chatflow 与 工作流的差异解析:多轮对话与流程编排的真正区别
  • linux 安装python
  • Android第十一次面试多线程篇
  • UE5蓝图中播放背景音乐和使用代码播放声音
  • 【案例分享】蓝牙红外线影音遥控键盘:瑞昱RTL8752CJF
  • 阿里云服务器邮件发送失败(dail tcp xxxx:25: i/o timeout)因为阿里云默认禁用 25 端口
  • ZYNQ移植FreeRTOS和固化和openAMP双核
  • 文件夹的命名与分类
  • Java设计模式之迭代器模式详解
  • tiktoken学习
  • 【通关文件操作(下)】--文件的顺序读写(续),sprintf和sscanf函数,文件的随机读写,文件缓冲区,更新文件
  • 第4讲、Odoo 18 模块系统源码全解与架构深度剖析【modules】
  • Parsel深度解析:从入门到高阶的网页数据抓取艺术
  • Spring Boot整活指南:从Helo World到“真香”定律
  • KeePass安装与KeePass设置中文教程
  • 自扶正救生艇,乘风破浪,守护生命
  • 差分互连的串扰-信号与电源完整性
  • Linux---系统守护systemd(System Daemon)
  • IAR无法跳转定义,IARstm8跳转显示路径出错,系统库文件文件名后有[RO]
  • 怎么看一个网站是用模板什么做的/拓客引流推广
  • 宿州做网站的有吗/沈阳cms建站模板
  • 网站模板提供源码/谷歌搜索引擎 google
  • 全球最真实的新闻平台/河南网站建设优化技术
  • 平面排版网站/搜索推广渠道有哪些
  • 新手学做网站/友情链接交易网站源码