JAVA讲解算法-排序算法-选择排序算法-02

一、定义

选择排序法是一种不稳定的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到全部待排序的数据元素排完。

二、算法示例讲解(Java)

java 复制代码
public static void selectSort(int[] array) {
    if (array == null || array.length < 2) {
        return;
    }
    // 外层循环控制遍历的轮数,每轮找出剩余未排序部分中的最小(或最大)元素
    for (int i = 0; i < array.length - 1; i++) {
        // 假设当前未排序部分的第一个元素为最小值
        int minIndex = i;
        // 内层循环在剩余未排序部分中寻找最小值的索引
        for (int j = i + 1; j < array.length; j++) {
            // 如果找到更小的元素,则更新minIndex
            if (array[j] < array[minIndex]) {
                minIndex = j;
            }
        }
        // 将找到的最小值与当前位置的元素交换
        if (minIndex != i) {
            int temp = array[i];
            array[i] = array[minIndex];
            array[minIndex] = temp;
        }
    }
}

第1轮

未排序部分:[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

第2轮

未排序部分:[9, 8, 7, 6, 5, 4, 3, 2, 10]

第3轮

未排序部分:[8, 7, 6, 5, 4, 3, 9, 10]

第4轮

未排序部分:[7, 6, 5, 4, 8, 9, 10]

第5轮

未排序部分:[6, 5, 7, 8, 9, 10]

第6轮

未排序部分:[6, 7, 8, 9, 10]

第7轮

未排序部分:[7, 8, 9, 10]

第8轮

未排序部分:[8, 9, 10]

第9轮

未排序部分:[9, 10]

相关推荐
FQNmxDG4S3 小时前
Java多线程编程:Thread与Runnable的并发控制
java·开发语言
虹科网络安全4 小时前
艾体宝干货|数据复制详解:类型、原理与适用场景
java·开发语言·数据库
axng pmje5 小时前
Java语法进阶
java·开发语言·jvm
rKWP8gKv75 小时前
Java微服务性能监控:Prometheus与Grafana集成方案
java·微服务·prometheus
老前端的功夫5 小时前
【Java从入门到入土】28:Stream API:告别for循环的新时代
java·开发语言·python
qq_435287925 小时前
第9章 夸父逐日与后羿射日:死循环与进程终止?十个太阳同时值班的并行冲突
java·开发语言·git·死循环·进程终止·并行冲突·夸父逐日
小江的记录本5 小时前
【Kafka核心】架构模型:Producer、Broker、Consumer、Consumer Group、Topic、Partition、Replica
java·数据库·分布式·后端·搜索引擎·架构·kafka
yaoxin5211235 小时前
397. Java 文件操作基础 - 创建常规文件与临时文件
java·开发语言·python
极客先躯7 小时前
高级java每日一道面试题-2025年11月24日-容器与虚拟化题[Dockerj]-runc 的作用是什么?
java·oci 的命令行工具·最小可用·无守护进程·完全标准·创建容器的核心流程·runc 核心职责思维导图
用户60648767188967 小时前
AI 抢不走的技能:用 Claude API 构建自动化工作流实战
java