java之选择排序

4 篇文章 0 订阅

从第0个下标开始往后找最小的,然后进行交换.

从第1个下标开始往后找最小的,然后进行交换.

手动写上两边执行步骤就可以看出规律来,然后套个循环就可以了

public class Test {
    public static void main(String[] args) {
        int[] arr = {8,3,2,1,7,4,6,5};
        //假设第一个元素是最小的
        int min = arr[0];
        //真实最小的下标
        int minIndex = 0;
        for(int i=1;i<arr.length;i++){
            if(min > arr[i]){
                min = arr[i];
                minIndex = i;
            }
        }
        //不等于0说明第一个元素就是最大的就不用交换了,节省性能
        if(minIndex!=0){
            arr[minIndex] = arr[0];
            arr[0] = min;
        }
        System.out.println(Arrays.toString(arr));

        int min2 = arr[1];
        int minIndex2 = 1;
        for(int i=2;i<arr.length;i++){
            if(min2 > arr[i]){
                min2 = arr[i];
                minIndex2 = i;
            }
        }
        if(minIndex2!=0){
            arr[minIndex2] = arr[1];
            arr[1] = min2;
        }
        System.out.println(Arrays.toString(arr));
    }
}

最终答案

public class Test {
    public static void main(String[] args) {
        int[] arr = {8,3,2,1,7,4,6,5};
        for(int j=0;j<arr.length;j++){
            int min = arr[j];
            int minIndex = j;
            for(int i=j+1;i<arr.length;i++){
                if(min > arr[i]){
                    min = arr[i];
                    minIndex = i;
                }
            }
            if(minIndex!=0){
                arr[minIndex] = arr[j];
                arr[j] = min;
            }
            System.out.println(Arrays.toString(arr));
        }
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值