【算法】选择排序

目录

一、说明
  • 1.选择排序(Selection Sort)是一种简单直观的排序算法。
  • 2.它的工作原理是首先在未排序序列中找到最小 (或最大)元素,存放到排序序列的起始位置 ,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的末尾。
  • 3.以此类推,直到所有元素均排序完毕。
二、复杂度
2.1 时间复杂度
  • 1.简单选择排序是一种不稳定的排序方法,其时间复杂度为0(n2)
2.2 空间复杂度
  • 1.在排序过程中仅需要一个元素的辅助空间用于数组元素值的交换,空间复杂度为O(1)。
三、java实现
3.1 示例代码
复制代码
public class SelectionSort {  
    public static void selectionSort(int[] arr) {  
        int n = arr.length;  
          
        for (int i = 0; i < n - 1; i++) {  
            // 假设当前索引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[minIndex];  
                arr[minIndex] = arr[i];  
                arr[i] = temp;  
            }  
        }  
    }  
  
    public static void main(String[] args) {  
        int[] arr = {64, 25, 12, 22, 11};  
          
        // 对数组进行排序  
        selectionSort(arr);  
          
        // 打印排序后的数组  
        System.out.println("排序后的数组:");  
        for (int num : arr) {  
            System.out.print(num + " ");  
        }  
    }  
}
相关推荐
tkevinjd5 分钟前
力扣148-排序链表
算法·leetcode·链表
qeen8717 分钟前
【C++】vector的模拟实现详解(二)
c++·学习·算法·迭代器·stl
可编程芯片开发13 小时前
基于MATLAB的PEF湍流风场生成器模拟与仿真
算法
罗西的思考13 小时前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 --- (9)--- Reward Judging
人工智能·算法·机器学习
Mr.HeBoYan14 小时前
一次持续三天才出现的丢包故障——深入解析 DPDK Memory Ordering、rte_ring 与 CPU Memory Barrier (下)
linux·网络·算法·架构·dpdk
wabs66615 小时前
关于图论【深度优先搜索的理论基础】
算法·深度优先·图论
先吃饱再说16 小时前
LeetCode 101. 对称二叉树
算法
是Dream呀16 小时前
人眼看不出的伪造,AI如何识别?实测合合信息跨模态鉴伪与去反光技术
算法
QN1幻化引擎17 小时前
SFA 信号场注意力:用8KB参数换248x KV Cache压缩,边缘设备也能跑长序列
人工智能·算法·gitee·gitlab
段一凡-华北理工大学17 小时前
向量数据库实战:选型、调优与落地~系列文章03:向量相似度算法全解:余弦、欧氏、内积,到底该用哪个?
大数据·数据库·人工智能·算法·机器学习·向量相似度·高炉炼铁