java冒泡排序

#关键词#

java,基础,冒泡排序,代码

如果我们想要将数组里的 n 个数按照从小到大的顺序进行冒泡排列,冒泡排序步骤如下:

1.从头开始,将第 1 个和第 2 个数进行比较,如果前面的数比后面的大,交换位置;

2.向后移动,开始比较第二个,第三个,规则同上一步;

3.移动比较,直到比较了第 n 个和第 n-1 个,第一轮完成;

4.重复从第一步到第三步,完成n-1轮就可以了。不同的是,每次移动次数会减少,比如说第二轮只需要比较到第 n-1 个和第 n-2 个,因为第 n 个和第 n-1 个在前一轮比较过了,第 n 个就是目前最大的数了。

按照上面的步骤,我们就可以完成冒泡排序了,不过还可以简化:如果在一轮中,没有发生交换,那意味着大家就是按照从小到大的顺序排的,那么就可以停止程序了。

import java.util.Arrays;

public class Main{
    public static void main(String[] args){
        int [] sort_arr=new int []{13,15,17,18,2,1,5,3,54,5,6,14,18};
        int [] new_arr=maopao_test(sort_arr);
        System.out.println(Arrays.toString(new_arr));
    }

    public static int[] maopao_test(int [] a){
        int [] inner_arr=Arrays.copyOf(a,a.length);
        for (int i = 0; i < inner_arr.length-2; i++) {
            Boolean flag_break=true;
            for (int j = 0; j < inner_arr.length-1-i; j++) {
                if (inner_arr[j]>inner_arr[j+1]){
                    int tem_i=inner_arr[j];
                    inner_arr[j]=inner_arr[j+1];
                    inner_arr[j+1]=tem_i;
                    flag_break=false;//如果没有发生交换,那么flag_break就是true
                } 
            }
            if(flag_break){return inner_arr;}
        }
        return inner_arr;
    }
}

运行如下:

[1, 2, 3, 5, 5, 6, 13, 14, 15, 17, 18, 18, 54]

进程已结束,退出代码为 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值