使用递归实现冒泡排序
/**
* @Desc 递归冒泡排序
**/
public class _04BubbleSort {
public static void sort(int[] a){
bubble(a, a.length - 1);
}
public static void sort2(int[] a){
bubble(a, a.length - 1);
}
/**
* 递归
* @param a 排序的数组
* @param j 次数
*/
private static void bubble(int[] a, int j) {
if(j == 0) {
return;
}
for (int i = 0; i < j ; i++) {
if(a[i] > a[i + 1]) {
int t = a[i];
a[i] = a[i + 1];
a[i + 1] = t ;
}
}
bubble(a, j - 1);
}
/**
* 改进版,减少不必要的递归次数
* @param a
* @param j
*/
private static void bubble2(int[] a, int j) {
if(j == 0) {
return;
}
int x = 0 ;
for (int i = 0; i < j ; i++) {
if(a[i] > a[i + 1]) {
int t = a[i];
a[i] = a[i + 1];
a[i + 1] = t ;
x = i ;
}
}
bubble2(a, x);
}
public static void main(String[] args) {
int[] arr = {12,32,11,24,123,66,89,54};
sort2(arr);
for (int i : arr) {
System.out.println(i);
}
}
}