java冒泡排序

冒泡排序的理论

什么是冒泡排序呢?如下图,每个圆圈里的数字代表他的大小。
五个泡泡
现在五个泡泡是无序的,要把它从大到小或者从小到大排序,就要用到冒泡算法。
拿从小到大排序举例,第一步是霸第一个球3和第二个球5进行比较,如果3比5大,那就交换他俩;如果不是,就不交换。然后,就比较第二个球现在的位置和第三个球,很显然,5比2大,所以交换他俩
交换2和5
然后比5和4,5比四大,所以交换5和4,以此类推,最终第五个位置是最大的。然后,就要从第一个位置开始,重复以上步骤找到第二大的,再重复找第三大的。最终换完的就是从小到大的顺序了

交换后的顺序
同理,要从小到大排,就是要找出最小的放在后边,然后是第二小、第三小,直到排完。

冒泡排序的代码

从上面的推导可以看出,实际上整个过程是两个循环来完成。外部循环来控制控制要找几次最大值/最小值,内部循环是用来找当前最大值/最小值的。在内部循环里,我们还要判断两个数字大大小以及他们是否要交换数值。在这里就会有人出现一个如下的错误:

a=b;
b=a;

看起来是把a的值赋给b,又把b的值赋给a。但是实际运行过后会发现,a和b都成了b的值。原因是在a给b赋值之前,a的值已经成了b的值。要解决这个问题,就要用到中间变量如下:

int k;
k = a;
a=b;
b=a;

先把a的值赋给k,就不怕a的值丢失了。

如上所述,冒泡排序的代码如下:

public static void maopao(){
        int i,j,k;
        int[] num = {12,23,43,53,76,13,34,76,34,22};
        for (i = 0;i<num.length-1;i++){
            for (j=0;j<num.length-1-i;j++) {
                if (num[j] < num[j + 1]) {
                    k = num[j + 1];
                    num[j + 1] = num[j];
                    num[j] = k;
                }
            }
        }
        for (i = 0;i<num.length;i++){
            System.out.print(num[i]);
            if(i!=num.length-1){
                System.out.print(',');
            }
        }
    }
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值