java简单排序之选择排序(从小到大)

第一层for循环

从数组0索引开始,和后面每个索引的数组值进行比较,获取0索引处最小的值,

依次由1索引开始,和后面每个索引的数组值进行比较,获取1索引处最小的值,

以此类推,一共要操作length-1次,由于索引从0开始,所以外部循环的范围就是<length-1

第二层for循环

在循环中,最小索引的数组值大于后面的索引的数组值,则,把该索引值赋给最小索引;

排序

每一轮内循环都会得到该轮循环中,数组的最小值,并把索引赋给了minIndex.由此可以用第一层for循环的i来操作数组,把每轮第二层for获取的最小值赋给nums数组,从而排序

代码如下

package javase.array;

import java.util.Arrays;

public class ChooseSort {
    public static void main(String[] args) {
     int [] nums = {3,2,1};//定义排序目标数组
        /*
        外层循环控制找出的具体最小值的次数,
        3个数据,需要操作2次最后一个数据不需要再次比较
        所以循环2次 = i从0到1次也就是nums.length-1
         */
        for (int i = 0; i < nums.length-1; i++) {
            int minIndex = i;//定义最小值数组索引
            /*
            内层循环通过最小索引的数组值和数组中其他值分别比较,
            若最小索引的值大于比较值,则把比较值的索引赋给最小索引
             */
            for (int j = i+1; j < nums.length; j++) {
                if (nums[minIndex]>nums[j]){
                    minIndex = j;
                }

            }
            /*
            每一轮内部循环获得的分段最小值进行交换,
            把最小值依次赋给外部循环控制的nums数组的每一个索引的值
             */
            int temp = nums[minIndex];
            nums[minIndex] = nums[i];
            nums[i] = temp;


     }

        System.out.println(Arrays.toString(nums));

    }
}


版权声明:本文为SHEN548784原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。