java复习第四天(二)之[冒号排序优化]

冒号排序:

简介:冒号排序是经典的排序算法,几乎在java星球中人尽皆知,所以来复习一下这个简单的经典算法。

首先我们要了解什么是冒号排序呢?冒号排序就是使一个混乱的数字重新从小到大依次排序,或者从大到小依次排序比如我有一个数组为[7,2,1,8,6,9,3,4,5]使这个数组变成[1,2,3,4,5,6,7,8,9]该怎么做呢?

首先要解决的核心难点:比较数组中两个元素,如果第一个元素比第二个元素大,则两者交换.

比如,如果有一瓶可乐和雪碧,要使他们的饮料相互交换这时就需要一个容器来接受交换时的饮料

如图:

如果用代码的方式就是这样的:

import java.util.Arrays;

public class px {
    public static void main(String[] args) {
        int[] a =new int[]{7,2,1,8,6,9,3,4,5};
        Test(a);
        System.out.println(Arrays.toString(a));
    }

    //排序
    public static int[] Test(int[] a){
        //临时变量
        int temp;
        //外层循环是总共循环次数,-1是为了防止下标越界
        for (int i = 0; i <a.length-1; i++) {
            //内存循环判元素大小,-1是为了防止下标越界,-i是没排除一个则第二次可以少判断一次
            for (int j = 0; j <a.length-1-i; j++) {
                //判断是否要交换
                if (a[j+1]<a[j]){
                    //两两相交
                    temp=a[j+1];
                    a[j+1]=a[j];
                    a[j]=temp;
                }
            }
        }
        return a;
    }
}

 冒号排序优化:

优化版的冒号排序相比于原来的则多了一个记录循环一趟下来是否交换位置如果没有则代表已经排序完成则退出循环,减少循环次数,代码如下:

import java.util.Arrays;

public class px {
    public static void main(String[] args) {
        int[] a = new int[]{7, 2, 1, 8, 6, 9, 3, 4, 5};
        Test(a);
        System.out.println(Arrays.toString(a));
    }

    //排序
    public static int[] Test(int[] a) {
        //临时变量
        int temp;
        //外层循环是总共循环次数,-1是为了防止下标越界
        for (int i = 0; i < a.length - 1; i++) {
            //判断是否需要接着循环
            boolean flag = false;
            //内存循环判元素大小,-1是为了防止下标越界,-i是没排除一个则第二次可以少判断一次
            for (int j = 0; j < a.length - 1 - i; j++) {
                //判断是否要交换
                if (a[j + 1] < a[j]) {
                    //两两相交
                    temp = a[j + 1];
                    a[j + 1] = a[j];
                    a[j] = temp;
                    //交换记录
                    flag=true;
                }
                //判断是否需要退出循环
                if (flag==false){
                    break;
                }
            }
        }
        return a;
    }
}

总之呢还是要熟悉冒泡排序的逻辑,这样才能有更深的理解。 

创作难免有错误和不当的地方,还请大家多多指教。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

123小步

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值