java选择排序算法案例

分析:选择排序算法(不稳定)
每一轮从待排序的元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的后边(看实例)。
文字解析:如第一轮:标记第一个数(15)为最小,然后一个一个的比较,2比15小,就暂时标记2为最小,在往后和2一个一个的比较,入过有比2小的,就暂时标记那个数为最下,再继续比较,入过后边的数没有比2小的了,则2和15交换位置(常用方法:加法,借助第三变量,移位等)。
如第二轮:因为数列中2最小,放在最前边了,所以2就不在比较了,即标记剩下的待排序的第一个为最小,在重复第一步(看第二轮的结果加深理解)。
剩下的就是重复第一轮第二轮了。

以实例加深理解:

给定数组:15  2  45  32  56  89  4  15  55  6

第 一 轮:2  15  45  32  56  89  4  15  55  6      比较 9 次

第 二 轮:2  4   45  32  56  89  15 15  55  6      比较 8 次

第 三 轮:2  4   6   32  56  89  15 15  55  45     比较 7 次

第 四 轮:2  4   6   15  56  89  32 15  55  45     比较 6 次

第 五 轮:2  4   6   15  15  89  32 56  55  45     比较 5 次

第 六 轮:2  4   6   15  15  32  89 56  55  45     比较 4 次

第 七 轮:2  4   6   15  15  32  45 56  55  89     比较 3 次

第 八 轮:2  4   6   15  15  32  45 55  56  89     比较 2 次

第 九 轮:2  4   6   15  15  32  45 55  56  89     比较 1 次


源代码:

public class shuzu7 {
    public static void main(String[] args) {
        int[] nums = {15,2,45,32,56,89,4,15,55,6};
        int minIndex = 0;//用于记录每次比较的最小值下标。
        //控制轮数
        for (int i = 0; i < nums.length-1; i++) {

            minIndex = i;//每轮假设一个最小值下标(每轮的第一个)
            //控制比较次数,因为最后一个都需要比较一次,所以是nums.length,不-1
            for (int j = i+1; j < nums.length; j++) {
                //如果标记的数比比较的数大,则换标记数的下标,在进行比较
                if(nums[minIndex]>nums[j]){
                    minIndex = j;
                }
            }
            //判断需要交换的下标是否是自己(i)
            if(minIndex!=i){
                nums[minIndex] = nums[minIndex] + nums[i];
                nums[i] = nums[minIndex] - nums[i];
                nums[minIndex] = nums[minIndex] - nums[i];
            }
        }
        //输出结果
        for (int i = 0; i < nums.length; i++) {
            System.out.print(nums[i]+" ");
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值