排序算法杂谈(二) —— 冒泡排序的递归实现

本文介绍了一种将经典的冒泡排序算法用递归方式实现的方法。虽然这种实现方式不推荐用于实际应用,但可以用来拓宽算法理解。文章提供了一个具体的Java实现案例。

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

众所周知,循环和递归,在很多情况下是可以互相转换的。

那么,冒泡排序(Bubble Sort),作为典型的双重循环结构,也可以将其转化成递归形式。

 

但是,将递归转化为循环,对于程序的运行是有益的,因为它避免了不可预知的“方法压栈”的现象出现。

而将循环化为递归,多数情况下,不推荐这么做,即使递归的代码可能实现地非常漂亮。漂亮与高效往往是冲突的。

 

所以,以下的冒泡排序仅作参考,读者可以用它来拓宽思维。但是,永远不要这样写冒泡排序!

 

public final class BubbleSortRecursion implements Sort {

    @Override
    public void sort(int[] array) {
        recursion(array, 0, array.length - 2);
    }

    private void recursion(int[] array, int left, int right) {
        if (right > 0) {
            if (array[left] > array[left + 1]) {
                ArrayHelper.swap(array, left, left + 1);
            }
            if (left >= right) {
                recursion(array, 0, right - 1);
            } else {
                recursion(array, left + 1, right);
            }
        }
    }
}

 

转载于:https://www.cnblogs.com/jing-an-feng-shao/p/9078826.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值