数组排序(冒泡排序)

3 冒泡排序

3.1 冒泡排序原理
  • 如果上篇文章的选择排序对于升序来讲是每次先排好较小的元素,那么本篇文章所讲的冒泡排序或许可以称之为每次先排好较大的元素。
  • 那么顾名思义,“冒泡”可以理解为在排序过程中(升序)总有一个比周围大的元素在从前往后不断蹦哒,不断地和后面比他小的元素交换位置,好比鱼在水里边游边吐泡泡。
  • 或许我们可以看个例子加深理解:
3.2 冒泡排序示例
        int[] arr = {7, 2, 3, 8, 1};
        System.out.println("未排序数组:" + Arrays.toString(arr));
        // 外循环中可将条件里的arr.length-1看作一个整体 并代入到内循环理解
        for (int i = 0; i < arr.length - 1; i++) {
            // 内循环排序:取外循环i值作为条件,i值可看作为数组中末尾已排序完成的较大值的数量
            // 当进行到下一轮排序时,无需再次进行末尾元素的排序而只需关注前面未排序完成的元素集合
            // 那么-1是因为两两进行比较,当取到末尾元素时下标不能越界(注意j+1不能大于array.length-1)
            for (int j = 0; j < arr.length - 1 - i; j++) {
                // 如前位元素大于后位元素 则前位元素后移
                // 如此一轮结束即可取到最大值并放置末尾
                if (arr[j] > arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                    System.out.println("第" + (i + 1) + "轮排序过程:" + Arrays.toString(arr));
                }
            }
            System.out.println("第" + (i + 1) + "轮排序完成");
        }

运行结果:

未排序数组:[7, 2, 3, 8, 1]
第1轮排序过程:[2, 7, 3, 8, 1]
第1轮排序过程:[2, 3, 7, 8, 1]
第1轮排序过程:[2, 3, 7, 1, 8]
第1轮排序完成
第2轮排序过程:[2, 3, 1, 7, 8]
第2轮排序完成
第3轮排序过程:[2, 1, 3, 7, 8]
第3轮排序完成
第4轮排序过程:[1, 2, 3, 7, 8]
第4轮排序完成
3.3 冒泡排序示例图

冒泡排序图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值