排序算法杂谈(二) —— 冒泡排序的递归实现
2018-05-23 19:20
381 查看
众所周知,循环和递归,在很多情况下是可以互相转换的。
那么,冒泡排序(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); } } } }
相关文章推荐
- 常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)
- 常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)
- 常见的五类排序算法图解和实现(交换类:冒泡排序,递归的快速排序)
- 排序算法之冒泡排序的思想以及Java实现
- 快速排序、冒泡排序、堆排序、shell排序的递归和非递归实现
- 选择排序,冒泡排序,排序算法实现与原理
- PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
- 递归方式实现BubbleSort 冒泡排序
- 排序算法--交换排序(冒泡排序、快速排序、随机快速排序)java实现
- 常见排序算法的Java实现(1)——冒泡排序
- 必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序
- [排序算法]:Java实现冒泡排序和快速排序
- PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
- 递归实现链表的冒泡排序。
- 对一组随机生成数进行几种常用排序算法的分析设计和实现之一 ——冒泡排序
- 必须知道的八大种排序算法【java实现】(一) 冒泡排序、快速排序
- 八大排序算法 Java、Python、C++实现 -- 冒泡排序
- 几种基本的排序算法(选择排序,冒泡排序,快速排序,归并排序,希尔排序)C语言实现
- [java]冒泡排序的常规、改进以及递归实现
- 递归实现归并排序(基本排序算法)