解析
对0到倒数第一个数进行排序
等价于:对数组的0到倒数第二个元素,这部分排序,然后把最后一个元素插入到这个有序的部分中
import java.util.Scanner;
public class 递归形式进行插入排序 {
public static void main(String[] args) {
// TODO Auto-generated method stub
int []a=new int [5];//长度为5的数组
Scanner in=new Scanner(System.in);
for(int i=0;i<5;i++) {
a[i]=in.nextInt();
}
insertSort(a,a.length-1);
for(int i=0;i<5;i++)
{
System.out.println(a[i]);
}
}
static void insertSort(int []arr,int k) {
if(k == 0) {
return ;
}
//对前k-1个元素排序
insertSort(arr,k-1);
//把位置k的元素插入到前面的部分
int x=arr[k];
int index=k-1;
while(index > -1 &&x <arr[index]) {
arr[index+1]=arr[index];//依次覆盖
index--;
}
arr[index+1]=x;//看31行减了
}
}
找重复:
1.找到一种划分方法
2.找到递推公式或者等价转换
都是父问题转换为求解子问题
找变化的量
1.变化的量通常要作为参数
找出口
1.根据参数变化的趋势,对边界进行控制,适时终止递归