选择排序(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
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程