12.选择排序

import java.util.Arrays;

/**
 * 选择排序
 * 基本思想是:
 * 第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换,
 * 第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换,
 * 第三次从arr[2]~arr[n-1]中选取最小值,与arr[2]交换,…,
 * 第i次从arr[i-1]~arr[n-1]中选取最小值,与arr[i-1]交换,…,
 * 第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n-2]交换,
 * 总共通过n-1次,得到一个按排序码从小到大排列的有序序列
 */
public class SelectSort {
    public static int[] selectSort(int[] arr){
        int length = arr.length;
        int minIndex = 0;
        int temp = 0;
        for (int i = 1; i < length; i++) {
            minIndex = i - 1;
            for (int j = i; j < length; j++) {
                if (arr[j]<arr[minIndex]){
                    minIndex = j;
                }
            }
            if (minIndex!=i-1){
                temp = arr[minIndex];
                arr[minIndex] = arr[i-1];
                arr[i-1] = temp;
            }
            System.out.printf("第%d趟的结果是:%s
",i, Arrays.toString(arr));
        }
        System.out.println("从小到大排序结果为:"+Arrays.toString(arr));
        return arr;
    }
    public static void main(String[] args){
        selectSort(new int[]{101,34,119,1});
        //第1趟的结果是:[1, 34, 119, 101]
        //第2趟的结果是:[1, 34, 119, 101]
        //第3趟的结果是:[1, 34, 101, 119]
        //从小到大排序结果为:[1, 34, 101, 119]
    }
}
原文地址:https://www.cnblogs.com/fly-book/p/11660470.html