您的位置:首页 > 其它

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

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);
}
}
}
}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐