vlambda博客
学习文章列表

java数组选择排序

 不一样的排序之选择排序。

之前有发过冒泡排序,插入排序,本次我们就来看看选择排序是如何实现的,与前两个排序算法一样,通过嵌套循环实现排序只是中间交换逻辑不一样,插入排序主要从头到尾依次比较然后取比比较值小的数字中最小/最大的那个,然后交换位置,最终实现排序。


    注:红色字体最小/最大,是根据从小到大升序/从大到小降序逻辑定的。




01


动图演示





02



代码实现


public static void main(String[] args) { //排序数组 int[] arr = {5,6,3,1,8,7,2,4}; //最小数字下标 int minIndex = 0; //数组长度 int arrLen = arr.length; //数组长度减1是因为前面数字排序后最后一个为最大值或最小值 for (int i = 0; i < arrLen - 1; i++) { minIndex = i; for (int j = i + 1; j < arrLen; j++) { //比较运算符>是从小到大排序,如果需要从大到小排序则改成< if (arr[minIndex] > arr[j]) { minIndex = j; } } //把最小值替换到最前面 int temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; //排序后 System.out.print("第"+(i+1)+"轮排序后结果:"); for (int item : arr) { System.out.print(item); } System.out.println(""); } //排序后 System.out.print("排序后结果:"); for (int item : arr) { System.out.print(item); }}
执行结果:

第1轮排序后结果:16358724

第2轮排序后结果:12358764

第3轮排序后结果:12358764

第4轮排序后结果:12348765

第5轮排序后结果:12345768

第6轮排序后结果:12345678

第7轮排序后结果:12345678

排序后结果:12345678