排序算法之-选择

算法原理

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

算法图解

算法实现

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");
        }
    }

结果

相关推荐
一只懒洋洋23 分钟前
K-meas 聚类、KNN算法、决策树、随机森林
算法·决策树·聚类
当归102435 分钟前
SQL Server死锁排查实战指南
java·服务器·网络
echoyu.39 分钟前
消息队列-初识kafka
java·分布式·后端·spring cloud·中间件·架构·kafka
little_xianzhong43 分钟前
关于对逾期提醒的定时任务~改进完善
java·数据库·spring boot·spring·mybatis
百锦再1 小时前
脚本语言的大浪淘沙或百花争艳
java·开发语言·人工智能·python·django·virtualenv·pygame
小猪咪piggy1 小时前
【JavaEE】(23) 综合练习--博客系统
java·数据库·java-ee
周航宇JoeZhou1 小时前
JP4-7-MyLesson后台前端(五)
java·前端·vue·elementplus·前端项目·mylesson·管理平台
David爱编程1 小时前
从 JVM 到内核:synchronized 与操作系统互斥量的深度联系
java·后端
渣哥1 小时前
Java Set 不会重复?原来它有“记仇”的本事!
java
一叶飘零_sweeeet1 小时前
从 0 到 1 攻克订单表分表分库:亿级流量下的数据库架构实战指南
java·数据库·mysql·数据库架构·分库分表