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

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


版权声明

  • 本文原创作者:谷哥的小弟
  • 作者博客地址: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.xdnf.cn/news/10015.html

相关文章:

  • 从“刚性扩容”到“弹性供给”:移动充电服务重构配电网边际成本
  • Node.js 中 require 源码解析
  • 从零起步认知微内核操作系统(AGI)
  • JavaScript 循环语句总结
  • Linux浅谈
  • VMware安装esd格式系统镜像
  • Java实现命令行图书管理系统(附完整源码)
  • 使用 C/C++ 和 OpenCV 调用摄像头
  • Java打包在加载外面的yaml文件
  • 2025LitCTF 复现
  • 【SQL】关键字
  • 【笔记】suna部署之获取 Supabase API key 和 project URL
  • 【笔记】suna部署之获取 Tavily API key
  • 第42节:模型优化与部署:Web服务部署(Flask, FastAPI)
  • Arduino LCD 1602液晶显示器2(I2C总线)
  • ubuntu 22.04 编译安装nignx 报错 openssl 问题
  • 【VMware Workstation 17 Pro许可证密钥】
  • 如何站在指标体系之巅看智能数据建模产品(GAI)
  • 使用k8s服务进行端口代理
  • 3D拟合测量水杯半径
  • C++ 模板参数包展开方式
  • 微服务架构设计规范
  • 详解GPU
  • 湖北理元理律师事务所观察:债务优化如何成为民生安全网
  • APM32微控制器键盘PCB设计实战教程
  • Docker 本地化部署FireCrawl
  • 《Pytorch深度学习实践》ch1-线性模型
  • Axure RP11安装、激活、汉化
  • ubuntu24.04与ubuntu22.04比,有什么新特性?
  • 增删改常用的元素