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]

相关推荐
2301_780669861 天前
文件字节流输出、文件复制、关闭流的方法
java
剑锋所指,所向披靡!1 天前
C++之类模版
java·jvm·c++
Coder_Boy_1 天前
基于SpringAI的在线考试系统-0到1全流程研发:DDD、TDD与CICD协同实践
java·人工智能·spring boot·架构·ddd·tdd
sheji34161 天前
【开题答辩全过程】以 面向高校校园的物物交换系统设计与实现为例,包含答辩的问题和答案
java·eclipse
卓怡学长1 天前
m115乐购游戏商城系统
java·前端·数据库·spring boot·spring·游戏
2501_944526421 天前
Flutter for OpenHarmony 万能游戏库App实战 - 蜘蛛纸牌游戏实现
android·java·python·flutter·游戏
打工的小王1 天前
java并发编程(三)CAS
java·开发语言
尤老师FPGA1 天前
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十五讲)
android·java·ui
星火开发设计1 天前
C++ 函数定义与调用:程序模块化的第一步
java·开发语言·c++·学习·函数·知识
cypking1 天前
二、前端Java后端对比指南
java·开发语言·前端