【皮一下】用递归实现冒泡排序

本文介绍了一种倒序实现的冒泡排序算法,并通过递归方式进一步优化了排序过程。从后向前遍历数组,若当前元素小于前一个元素,则交换位置,直至整个数组有序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言:

想必来逛C站的小伙伴,应该都听说过大名鼎鼎的“冒泡排序”吧🤨,今天我们来娱乐一下,将冒泡排序“倒过来写”,然后再多此一举的用“递归”实现它。话说小名最近感觉递归还挺有意思的🤣
在这里插入图片描述


思路

从后向前按照数组数组长度遍历,我们规定i = list.size() - 1如果 后面的数(i) < 前面的数(i-1),就将后面的数字换到前面来。

冒泡排序

public void bubble(List<Integer> list) {
    // 从后向前遍历数组
    for (int i = list.size() - 1; i > 0; i--) {
        for (int j = i - 1; j > 0; j--) {
            // 如果前面的数字大,和后面的交换
            if (list.get(j) > list.get(i)) {
                int tmp = list.get(j);
                list.set(j, list.get(i));
                list.set(i, tmp);
            }
        }
    }
}

递归排序

public void bubbleV2(List<Integer> list, Integer index, Integer next) {
    if (index <= 0) {
        return;
    }
    // 前面数 > 后面数 前面的和后面的交换
    if (next < list.get(index)) {
        Integer qian = list.get(index);
        list.set(index, next);
        list.set(index + 1, qian);
    }
    bubbleV2(list, index - 1, list.get(index - 1));
}

测试:

    @Test
    public void test3() {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(4);
        list.add(3);
        // 冒泡排序
        bubble(list);
        System.out.println(list);
        // 递归方式
        // bubbleV2(list, list.size() - 2, list.get(list.size() - 1));
       // System.out.println(list);
    }

输出:

[1, 3, 4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

进阶的小名

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

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

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

打赏作者

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

抵扣说明:

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

余额充值