排序算法杂谈 —— 冒泡排序的递归实现
Posted Gerrard_Feng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了排序算法杂谈 —— 冒泡排序的递归实现相关的知识,希望对你有一定的参考价值。
众所周知,循环和递归,在很多情况下是可以互相转换的。
那么,冒泡排序(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); } } } }
以上是关于排序算法杂谈 —— 冒泡排序的递归实现的主要内容,如果未能解决你的问题,请参考以下文章
8种面试经典!排序详解--选择,插入,希尔,冒泡,堆排,3种快排,快排非递归,归并,归并非递归,计数(图+C语言代码+时间复杂度)