一、算法思想
由插入排序的基本思想可以得到它的递归算法:
确定前面的数是已经排好序了的,从当前数开始,依次一个个的插入到前面的数中。
二、代码
//插入排序的递归算法
void insert(vector<int>& a, int x=1)
{ //第一个参数为向量,第二个参数为将要向前插入的数
if(x >= (int)a.size()) //判断是否已经到了向量的最大值
return; //是即返回,程序结束
int temp = a[x],j; //定义变量,temp存储当前数值
for(j = x; j > 0 && a[j-1] > temp; j--) //和插入排序普通算法一样,从当前数开始,从后往前插入
a[j] = a[j-1]; //通过赋值,节省时间
a[j] = temp; //找到正确位置后,赋值,
insert(a, x+1); //递归,开始插入下一个数
}