排序算法之-选择

算法原理

在未排序的数列中找出最大(或最小)的元素,然后将其存入到已排序的数列起始位置,紧接着在剩余的未排序数列中继续查找最大(或最小)的元素,并将其放入到已排序的数列末尾,依次类推,直至未排序的数列中没有元素。

算法图解

算法实现

java 复制代码
public class SelectionSort {

    public void sort(int arr[]){
        int startIndex = 0;
        while (startIndex < arr.length-1){
            int minValue = arr[startIndex];
            int minIndex = startIndex;
            for(int i=startIndex+1;i<arr.length;i++){
                if(minValue > arr[i]){
                    minValue = arr[i];
                    minIndex = i;
                }
            }
            if(startIndex != minIndex){
                int temp = arr[minIndex];
                arr[minIndex] = arr[startIndex];
                arr[startIndex]=temp;
            }
            startIndex++;
        }
    }
}

测试

java 复制代码
public static void main(String[] args) {
        int arr[] = {9,7,1991,27,-1,-10,0,2,65,-100};
        SelectionSort selectionSort = new SelectionSort();
        selectionSort.sort(arr);
        for(int i = 0;i<arr.length;i++){
            System.out.print(arr[i]+"\t");
        }
    }

结果

相关推荐
ZHW_AI课题组11 分钟前
基于逻辑回归的乳腺癌预测分类
算法·分类·逻辑回归
云烟成雨TD11 分钟前
Spring AI Alibaba 1.x 系列【53】Interrupts 中断机制:动态中断
java·人工智能·spring
胡志辉16 分钟前
贪心算法最坑的地方:每一步都看起来很对,最后还是错了
算法
用户2986985301419 分钟前
Java 操作 Word 文档:数学公式与符号的插入方法
java·后端
见青..19 分钟前
JAVA安全靶场环境搭建
java·web安全·靶场·java安全
代码北人生20 分钟前
GitHub 日榜第一、月下载 110 万:supervision 出现之前,写计算机视觉代码是什么感觉
算法·claude
一坨阿亮21 分钟前
Docker 离线部署
java·spring cloud·docker
南宫萧幕24 分钟前
HEV能量管理策略 Simulink 实战:从零搭建 Rule-based 与 A-ECMS 对比模型及排错指南
人工智能·算法·matlab·simulink·控制
LucaJu35 分钟前
一次 OOM 线上排查实录
java·jvm·oom·内存溢出
SimonKing44 分钟前
Firefox 太卡?换了这浏览器,内存占用直接降了 70%
java·后端·程序员