选择排序(Selection Sort)是一种简单直观的排序算法,其算法原理为首先在未排序的序列中找到最小(大)的元素,存放到排序序列的起始位置,然后再从剩余未排序的元素中继续寻找最小(大)的元素,存放到已排序序列的末尾,以此类推,直到所有元素均排序完成。


选择排序一共有“数组数-1”轮排序,每一轮排序又是一个循环,循环的规则如下:

1)先假定当前这轮循环的第一个数是最小数。

2)然后和后面每个数进行比较,如果发现有比当前数更小的数,则重新确定最小数,并得到下标。

3)当遍历到数组的最后时,就得到本轮最小的数。

4)和当前循环的第一个数进行交换。


例如:

import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
        int[] arr = new int[]{19,26,8,35,41,77};
        for(int i=0;i<arr.length-1;i++) { //每次循环都会找出最小的数
            int minIndex = i; //记录最小数的下标
            int minNum = arr[i]; //记录最小数
            for(int j=i+1;j<arr.length;j++) { //每次循环都会找出最小的数
                if(arr[j]<minNum) { //如果当前数比最小数小,则更新最小数
                    minNum = arr[j]; //更新最小数
                    minIndex = j; //更新最小数的下标
                }
            }
            arr[minIndex] = arr[i]; //将最小数放到最前面
            arr[i] = minNum; //将标志位放到最小数原来所在的位置
        }
        for(int i=0;i<arr.length;i++) {
            System.out.println(arr[i]);
        }
    }
}


运行结果如下:

8
19
26
35
41
77


点赞(0)

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

Dotcpp在线编译      (登录可减少运行等待时间)