学习笔记-选择排序

选择排序

将一个一维数组从小到大排序。

思路

选择排序的思路是:首先认为数组的第一个数是最小的,保留它然后遍历它后面的数,跟它作比较,选择出最小的数和位置。遍历结束后,让这个最小的数和数组的第一位数交换,这样确定了第一个最小的数。之后重复这个过程,认为第二个数是最小的,遍历它后面的数和它作比较,结束后就会找到第二小的数和它的位置,与数组的第二位交换,这样就确定了两个数字的顺序。
也就是说,一共要进行数组的长度-1次大循环,每一次循环确定一个数的位置,如果一共有5个数,那么4次就会全部排完。而每一个小循环都用来遍历当前最小的数的后面所有数,所以j从i+1开始,直到数组的长度,因为array[i]就是当前循环假定的最小的数。其中,假如假定的最小数是真的,也就是后面没有数比它小,那就没必要进行交换,因此可以判断两者位置是否相等,进行优化。

代码

private static void selcetSort(int[] arr){
        for (int i = 0; i <arr.length-1 ; i++) {
            int min=arr[i];
            int minIndex=i;
            for (int j = i+1; j <arr.length ; j++) {
                if(min>arr[j]){
                    min=arr[j];
                    minIndex=j;
                }
            }
            if(minIndex!=i) {
                arr[minIndex] = arr[i];
                arr[i] = min;
            }
        }
    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值