排序算法之-选择

算法原理

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

算法图解

算法实现

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

结果

相关推荐
初晴~27 分钟前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
黑胡子大叔的小屋1 小时前
基于springboot的海洋知识服务平台的设计与实现
java·spring boot·毕业设计
ThisIsClark1 小时前
【后端面试总结】深入解析进程和线程的区别
java·jvm·面试
火星机器人life2 小时前
基于ceres优化的3d激光雷达开源算法
算法·3d
虽千万人 吾往矣2 小时前
golang LeetCode 热题 100(动态规划)-更新中
算法·leetcode·动态规划
雷神乐乐2 小时前
Spring学习(一)——Sping-XML
java·学习·spring
arnold663 小时前
华为OD E卷(100分)34-转盘寿司
算法·华为od
小林coding3 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
V+zmm101343 小时前
基于小程序宿舍报修系统的设计与实现ssm+论文源码调试讲解
java·小程序·毕业设计·mvc·ssm
ZZTC3 小时前
Floyd算法及其扩展应用
算法