三大简单排序之一:冒泡

冒泡排序是一种简单的排序算法,通过两层循环实现。它将序列中的最大值逐步移动到末尾,形象地比喻为鱼吐泡泡的过程。在代码实现中,使用两个嵌套的for循环,通过比较并交换相邻元素的位置来完成排序。特别地,第二个for循环的条件为`j<arr.length-i-1`以避免已排序的元素再次参与比较。
摘要由CSDN通过智能技术生成

三大简单排序之一:冒泡

什么是冒泡

作为三大简单排序中最简单的排序,它简单粗暴,两个for循环直接排序完成。

为什么叫冒泡?像鱼吐泡泡一样,将一段序列中最大的或者最小的数,吐到最顶端。

它是怎么冒泡的

可以想象一下,序列的第一位是池底,最后一位是水面。如果是从小到大排序

  • 将第一位与第二位比较,若第一位更大则相互换位置,否则就不交换
  • 继续将第二位与第三位比较,重复第一步骤。
  • 直到将最大的数吐到水面,即最大数到了最后一位

以上是吐了第一个泡泡,这里被吐出的泡泡,就不会参与比较了,然后继续从池底开始,开始吐第二个泡泡,也就是将除第一个吐出的最大数以外的最大数也吐到水面

以此类推,当将最后一个泡泡吐完,排序也就完成了。

看以下动态图,可以想象最左边是池底,右边是水面。

代码实现
        //定义一个数组
        int[] arr = new int[]{8,3,4,5,10,2,1,9};
        //定义一个临时变量,用于两个数交换位置
        int temp=0;
        //第一个for循环,循环遍历每个数,使每个数都参与第二个for循环的冒泡过程
        for(int i=0;i< arr.length;i++){
        //第二个for循环,指一个泡泡是如何从池底到水面的
            for (int j=0;j< arr.length-i-1;j++){
        //这里if循环用于两个数的位置交换
                if(arr[j]>arr[j+1]){
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                }
            }

打印输出数组arr,得到结果如下

[1, 2, 3, 4, 5, 8, 9, 10]
注意

这里千万要强调一下,第二个for循环中,为什么要j<arr.length-i-1,

有两点原因:

  • 已经吐泡到水面的最大数不参与排序,所以要j<arr.length-i
  • 避免数组越界,后面要再-1
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值