数据结构与算法之冒泡排序

本文介绍了冒泡排序的实现思想和Java代码实现。冒泡排序通过两层循环完成数组的排序,第一层循环控制冒泡次数,第二层循环实现元素交换。文章鼓励读者手动画出冒泡过程以加深理解。
摘要由CSDN通过智能技术生成

前言

作为一名Java开发工程师,想必很多小伙伴在数据结构与算法的道路上难以突破,今天小编就和大家一起去突破它。开启算法之路。只要肯坚持,没有突破不了的困难。

冒泡排序

题目描述:

给定一个无序的数组,按照从小到大的顺序进行排序。

例如:

int[] arr = {3, 1, 4, 7, 87, 32, 2, 5};

返回一个有序的数组:sortArray:{1, 2, 3, 4, 5, 7, 32, 87}

实现思想:

由两个for循环实现,第一个for循环控制的是0~n-1,0~n-2,... 0~0,什么意思呢?就是说控制的是第几次冒泡;第二个for循环实现一次遍历中,不同位置上数据的交换(如上图所示)。

大家可以将上述中后续的几次冒泡排序实现过程, 手动画一下哦,相信你有不一样的收获。

代码实现(实现主要逻辑)

    /**
     * 冒泡排序主实现方法
     *
     * @param arr 要排序的数组
     */
    private static void bubbleSort(int[] arr) {
        // 1、边界处理
        if (arr == null || arr.length < 2) {
            return;
        }
        // 2、实现主逻辑
        int n = arr.length;
        // 0 ~ n-1
        // 0 ~ n-2
        // 0 ~ n-3
        for (int i = n - 1; i >= 0; i--) {
            // 0 ~ n-1 做的一些事情
            // 0和1是否交换,1和2是否交换 。。。
            for (int j = 1; j <= i; j++) {
                if (arr[j - 1] < arr[j]) {
                    swapArray(arr, j - 1, j);
                }
            }
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

xue_mall

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

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

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

打赏作者

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

抵扣说明:

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

余额充值