JAVA-选择排序

选择排序的执行顺序

选择排序刚开始的时候默认:第一个数为min(最小值),默认最小值下表是0,通过这两个东西实现的目标是:
每次选择排序都能选出最小的那个值
第一次选择排序:是拿1与后边的数(3\-2\4\5)来比较 比较下来后的结果是min=-2然后最小值的下标改为-2的下标2
注意的是:min 和 minindex是用来交换的
然后第一次选择排序后是:-2 3 1 4 5
第二次选择排序min=3因为i++,然后3与(1、4、5)比较1最小-》通过将1的下标给minindex,然后交换1,3,这样第二小的数
就被选出来了

代码如下

package 排序;

/**
 * @author 邓雪松 (づ ̄ 3 ̄)づ)
 * @create 2021-10-31-16-49
 */
public class 选择排序 {
    public static void main(String[] args) {
        int[] ints = new int[]{-2,3,5,1,2};
        selectSort(ints);
        for(int anInt:ints){
            System.out.print(anInt+" ");
        }
    }
    //选择排序
    public static void selectSort(int[] arr){
        //外层循环是选择排序的次数(arr.length-1)
        for (int i = 0; i < arr.length-1; i++) {
            //默认min和minindex为arr[i]然后与后面的数比较
            int min = arr[i];
            int minindex = i;
            //内层循环就是来用arr[i]和arr[i]后边的数比较
            for(int j=i+1;j<arr.length;j++){
                //如果找到比arr[i]默认小的数的话那么吧最小的那个下标给minindex用来交换
                if(min>arr[j]){
                    min = arr[j];//min就相当于临时存最小值的变量
                    minindex = j;
                }
            }
            //如果i不等于minindex说明:arr[i]不是最小的那个数,不是的话那就交换呗
            if(i!=minindex){
                arr[minindex]=arr[i];//就想但与吧最小的那个值赋值为arr[i]了
                arr[i]=min;//然后将最小值给arr[i]
            }
        }
    }
}

运行结果如下

-2 1 2 3 5 

结束

posted @ 2021-10-31 17:12  ╰(‵□′)╯  阅读(250)  评论(0编辑  收藏  举报