注意要点:
- 要限制k >= 0 并且 要在 end < a[k] 之前
- 最后要 k ++
import java.util.Scanner;
public class 递归形式进行插入排序 {
public static int[] a;
public static int n;
public static void main(String[] args) {
Scanner sca = new Scanner(System.in);
System.out.println("请输入数组个数n:");
n = sca.nextInt();
System.out.println("请输入" + n + "个数");
a = new int[n];
for(int i = 0; i < n; i ++) {
a[i] = sca.nextInt();
}
dfs(n - 1);
for(int i = 0; i < n; i ++) {
System.out.println(a[i]);
}
}
private static void dfs(int nt) {
//边界
if(nt == 0) {
return;
}
//先对前nt - 1 个数进行排序
dfs(nt - 1);
//再进行插入
int end = a[nt] , k = nt - 1 ;
while(k >= 0 && end < a[k] ) {
a[k + 1] = a[k];
k -- ;
}
k ++;
a[k] = end;
}
}