欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java之选择排序(正序、逆序)

程序员文章站 2022-03-01 22:17:27
...
public class SelectSort {
    public static void main(String[] args) {
        /**
         * @author JadeXu
         * @// TODO: 2020/12/4  选择排序
         * @思路
         * 每一层找最小值,放在i位,i从0开始递增,最后找到剩两位数时就只要走一层,所以要走(数组的长度-1)层
         * 先找最小值,从i开始的每一位数都要和最小值比较,所以要走(数组的长度)层
         * 每走一层,minIndex初始化值为每一层的层数-1(即i),因为索引从0开始,所以要-1
         * 每次查找时,初始化值为每一层的层数-1(即i),因为索引从0开始,所以要-1,每次判断将最小值的索引保存下来
         *每一层找完后,先判断当前层,minIndex是否与该层第一位值索引相等,相等就不进行交换(减少重复的交换)
         * 不相等就进行交换
         * 最小值和该层第一位交换
         *
         * 注意:根据需求,改变数据类型就行,这里用int[]举例
         */
    }
    //正序
    private static int[] sortByAsc(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            int minIndex = i;
            for (int j = i; j < arr.length; j++) {
                if(arr[j] < arr[minIndex]){
                    minIndex = j;
                }
            }
            int temp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = temp;
        }
        return arr;
    }
    //逆序
    private static int[] sortByDesc(int[] arr) {
        for (int i = 0; i < arr.length - 1; i++) {
            int maxIndex = i;
            for (int j = i; j < arr.length; j++) {
                if(arr[j] > arr[maxIndex]){
                    maxIndex = j;
                }
            }
            int temp = arr[i];
            arr[i] = arr[maxIndex];
            arr[maxIndex] = temp;
        }
        return arr;
    }
}

记得点赞,么么哒(づ ̄ 3 ̄)づ~ 爱您!