步骤都再注释里
其实插入直接用循环做就可。但是用递归做可以锻炼下思维~
public class HowToCreateRecursion {
/*
* 这个题是“倒着写”,正着实现
* 看似是从数组的末端开始,缩小一个元素,排序,插入
* 其实是先不断的缩小数组,因为k不等于0的情况下,函数就永远不会走到插入那一步
* 从k=1开始,进行插入排序,此步完成后,该数组前两个元素已经有序
* 依照这样的步骤,前三个,前四个,最后完成排序
* */
public static void insertSort(int a[],int k)
{
//数组缩小的只有一个元素时,不用排序
if(k==0)
return;
//分解成小数组,在小数组中进行插入排序
insertSort(a,k-1);
int x=a[k];
int index=k-1;
//寻找插入位置
while(index>-1&&x<a[index])
{
a[index+1]=a[index];
index--;
}
a[index+1]=x;
}
public static void main(String[] args) {
int a[]= {9,8,7,19,26,25,3,2,1};
insertSort(a,a.length-1);
System.out.println(Arrays.toString(a));
}
}