递归算法一般分为三个部分:
(1)递归出口
(2)分解过程
这个过程即用递归体(前项与后项的关系)将“大问题”分解成“小问题”,直到递归出口为止。
(3)求值过程
在求值过程中已知“小问题”,计算“大问题”。
(1)插入排序函数的调用
#include <iostream>
#include”2_3_4.cpp”
using namespace std;
int main()
{
int a[]={1,2,5,3,7,1,9,10,77};
SORT(a,9);
for(auto i:a)
cout<<i<<” “;
return 0;
}
(2)插入排序函数的实现
#include<iostream>
void SORT(int a[],int k)
{
if(k==2) //递归出口
{
if(a[0]>a[1])
{
int temp=a[0];
a[0]=a[1];
a[1]=temp;
}
}
else
{
SORT(a,k-1); //问题的分解
int i=k-1; //求值的过程,即从递归出口出来后要执行的步骤
while((a[i]<a[i-1])&&(i>0))
{
int temp=a[i];
a[i]=a[i-1];
a[i-1]=temp;
i=i-1;
}
}
}