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
