排序算法之选择排序(Java)

思路:先假设第一个数是最小值(arr[min]),然后循环整个数组

让 j 从第二个数开始循环,与arr[min]值进行比较

如果小于arr[min]值就与arr[min]值进行交换 i+1

j 的每次循环选出来剩余未排序数组中的一个最小值,排出来以后i+1

重复这个过程就可以依次把最小的值按照顺序排列出来

。。。。。。。。。。。。。。。。。。。。。。。。。。。

简单来说就是 0~N-1 范围内选一个最小的放到0位置

下一轮从 1~N-1 范围内选一个最小的放到1位置

public class 选择排序 {
    public static void selectionSort(int[] arr) {
        if(arr == null || arr.length<2){
            return ;
        }
        //从第0位数字开始循环,一直到第length-1位
        for(int i = 0 ; i < arr.length - 1;i++){
            int min = i;
            //循环数组判断min值和数组其他数的大小
            for(int j = i + 1 ;j < arr.length ;j++){
               min = arr[j] < arr[min] ? j : min;
            }
            swap(arr,i,min);
        }
    }
    public static void swap(int[] arr,int i,int j) {
        int tmp = arr[i];
        arr[i] = arr[j];
        arr[j] = tmp;
    }
posted @ 2021-03-31 16:34  小安不菜  阅读(74)  评论(0)    收藏  举报