java常用算法之交换排序---选择排序

代码块:

public class XuanZe implements SuanFa {
    private static Logger logger = Logger.getLogger(XuanZe.class);

    @Override
    //方法解析
    //第一次把第一个数a和剩余数列的最小数b比较大小;
    //如果b小于a,两者交换位置;

    //第二次把第二个数c和剩余数列的最小数d比较大小;
    //如果d小于c,两者交换位置;

    //第三次。。。

    //重复以上步骤
    public void suanFaRealise(int data[])
    {
        logger.info("XuanZe realise start.");
        int dataSize = data.length;
        int minkey, temp;
        for (int i = 0; i < dataSize - 1; i++)
        {
            //记录当前最小值下标。
            minkey = i;

            //遍历数组得到i后边边剩余数组的最小数。
            for (int j = i + 1; j < dataSize; j++)
            {
                if (data[j] < data[minkey])
                {
                    minkey = j;
                }
            }
            logger.info("第" + (i + 1) + "次得到最小值为:" + data[minkey]);

            logger.info("最小值 " + data[minkey] + " 将与第" + (i + 1) + " 个数 " + data[i] + " 比较大小。");

            temp = data[i];
            data[i] = data[minkey];
            data[minkey] = temp;
            logger.info("当前数列为: " + UtilTool.toString(data));

        }
    }
}

测试类:

public class Test {
    private static Logger logger = Logger.getLogger(Test.class);

    public static void main(String args[])
    {
        int[] test = {6, 1, 22, 7, 9, 33, 98, 55, 23, 78, 48};
        logger.info("suanfa test start.");
        //SuanFa suanfa = SuanFaFactory.getMaoPao();
        SuanFa suanfa = SuanFaFactory.getKuaiSu();
        suanfa.suanFaRealise(test);
        logger.debug(UtilTool.toString(test));

    }
}

执行过程:
2020-04-12 13:14:16 [ main:0 ] - [ INFO ] suanfa test start.
2020-04-12 13:14:16 [ main:3 ] - [ INFO ] start kuaisu suanfa.
2020-04-12 13:14:16 [ main:4 ] - [ INFO ] XuanZe realise start.
2020-04-12 13:14:16 [ main:4 ] - [ INFO ] 第1次得到最小值为:1
2020-04-12 13:14:16 [ main:5 ] - [ INFO ] 最小值 1 将与第1 个数 6 比较大小。
2020-04-12 13:14:16 [ main:5 ] - [ INFO ] 当前数列为: [1, 6, 22, 7, 9, 33, 98, 55, 23, 78, 48]
2020-04-12 13:14:16 [ main:7 ] - [ INFO ] 第2次得到最小值为:6
2020-04-12 13:14:16 [ main:7 ] - [ INFO ] 最小值 6 将与第2 个数 6 比较大小。
2020-04-12 13:14:16 [ main:7 ] - [ INFO ] 当前数列为: [1, 6, 22, 7, 9, 33, 98, 55, 23, 78, 48]
2020-04-12 13:14:16 [ main:8 ] - [ INFO ] 第3次得到最小值为:7
2020-04-12 13:14:16 [ main:8 ] - [ INFO ] 最小值 7 将与第3 个数 22 比较大小。
2020-04-12 13:14:16 [ main:8 ] - [ INFO ] 当前数列为: [1, 6, 7, 22, 9, 33, 98, 55, 23, 78, 48]
2020-04-12 13:14:16 [ main:8 ] - [ INFO ] 第4次得到最小值为:9
2020-04-12 13:14:16 [ main:8 ] - [ INFO ] 最小值 9 将与第4 个数 22 比较大小。
2020-04-12 13:14:16 [ main:8 ] - [ INFO ] 当前数列为: [1, 6, 7, 9, 22, 33, 98, 55, 23, 78, 48]
2020-04-12 13:14:16 [ main:9 ] - [ INFO ] 第5次得到最小值为:22
2020-04-12 13:14:16 [ main:10 ] - [ INFO ] 最小值 22 将与第5 个数 22 比较大小。
2020-04-12 13:14:16 [ main:10 ] - [ INFO ] 当前数列为: [1, 6, 7, 9, 22, 33, 98, 55, 23, 78, 48]
2020-04-12 13:14:16 [ main:10 ] - [ INFO ] 第6次得到最小值为:23
2020-04-12 13:14:16 [ main:10 ] - [ INFO ] 最小值 23 将与第6 个数 33 比较大小。
2020-04-12 13:14:16 [ main:10 ] - [ INFO ] 当前数列为: [1, 6, 7, 9, 22, 23, 98, 55, 33, 78, 48]
2020-04-12 13:14:16 [ main:10 ] - [ INFO ] 第7次得到最小值为:33
2020-04-12 13:14:16 [ main:11 ] - [ INFO ] 最小值 33 将与第7 个数 98 比较大小。
2020-04-12 13:14:16 [ main:11 ] - [ INFO ] 当前数列为: [1, 6, 7, 9, 22, 23, 33, 55, 98, 78, 48]
2020-04-12 13:14:16 [ main:11 ] - [ INFO ] 第8次得到最小值为:48
2020-04-12 13:14:16 [ main:11 ] - [ INFO ] 最小值 48 将与第8 个数 55 比较大小。
2020-04-12 13:14:16 [ main:11 ] - [ INFO ] 当前数列为: [1, 6, 7, 9, 22, 23, 33, 48, 98, 78, 55]
2020-04-12 13:14:16 [ main:11 ] - [ INFO ] 第9次得到最小值为:55
2020-04-12 13:14:16 [ main:11 ] - [ INFO ] 最小值 55 将与第9 个数 98 比较大小。
2020-04-12 13:14:16 [ main:11 ] - [ INFO ] 当前数列为: [1, 6, 7, 9, 22, 23, 33, 48, 55, 78, 98]
2020-04-12 13:14:16 [ main:12 ] - [ INFO ] 第10次得到最小值为:78
2020-04-12 13:14:16 [ main:12 ] - [ INFO ] 最小值 78 将与第10 个数 78 比较大小。
2020-04-12 13:14:16 [ main:12 ] - [ INFO ] 当前数列为: [1, 6, 7, 9, 22, 23, 33, 48, 55, 78, 98]
2020-04-12 13:14:16 [ main:12 ] - [ DEBUG ] [1, 6, 7, 9, 22, 23, 33, 48, 55, 78, 98]

发布了3 篇原创文章 · 获赞 1 · 访问量 65

猜你喜欢

转载自blog.csdn.net/weixin_43916023/article/details/105468161
今日推荐