/**
 *选择排序
 *  逻辑是这样的:
 *      1. 先定义变量,用于记录某个值的索引,默认为最小值,从每次遍历的值开始拿
 * 	2. 第二层循环i+1开始,从默认最小值索引后面开始遍历,判断新的值是否小于最小值。
 * 	   如果新的值小于最小值,将新的值的索引和最小值的索引进行替换,直到遍历结束。
 *	3. 第二层for循环结束,最小值索引已经发生了改变,然后将值进行替换。
 *	   替换完毕后,然后就拿着这个新的最小值开始了下次的循环,直到所有遍历结束。
 */
public static void main(String[] args) {
    int[] arr = {5, 1, 18, 2, 45, 31, -8};
    int k = 0; // 定义变量,用于记录某个值的索引,默认为最小值
    for (int i = 0; i < arr.length; i++) {
        k = i;
        for (int j = i+1; j < arr.length; j++) {
            //从默认最小值索引后面开始遍历,判断新的值是否小于最小值,
            //如果新的值小于最小值,将新的值的索引和最小值的索引进行替换,直到遍历结束。
            if(arr[j] < arr[k]){
                k = j;
            }
        }
        //遍历结束后,最小值索引已经发生了改变,然后将值进行替换
        int temp = arr[i];//定义临时遍历,进行替换。
        arr[i] = arr[k];//将新的最小值放到前面。
        arr[k] = temp;//将前面的值交给最小值。
                    // 然后就拿着这个新的最小值开始了下次的循环,直到所有遍历结束。
    }
    System.out.println(Arrays.toString(arr));
}
04-23 00:49