因为觉得i,j,++,- -的太烦了
只用一个循环(确定本次参与排序的元素的最大值)。
剩下的由递归调用来减少每次参与排序的元素数量。
直到还剩下一个元素时结束递归。
思路:
每一趟排序,都是从前往后确定本次的最大值。
每一次递归调用,都是从后往前减少一个参与排序的元素。
确定最大值的逻辑是不变的。
本趟排序,经过不停的swap,最大值一定是位于参与本次排序的元素的最后一个位置。
下一次递归调用的时候要将本次确定的最大值排除在外。
也就是对这个最大值之前的元素进行最大值冒泡。
所以传入递归调用的参数是这个最大值的对应的 index 减去 1 。
这样就是在逐步减小问题的规模。
如果传入递归的 index = 0, 说明本次应该对第0个元素和他之前的元素进行排序,这个时候就剩下一个元素了,还排什么排?
这就是递归的结束条件。
package sort;
/**
* 冒泡排序的递归写法
*/
public class BubbleSort {
public static void sort(int[] arr, int endIndex){