非递归:
#include<iostream>
using namespace std;
void insert(int *a,int len)
{
int j;
for(int i=1;i<=len;i++)
{
if(a[i]<a[i-1])
{
int temp=a[i];
for(j=i-1;j>=0 && temp<a[j];j--)
{
a[j+1]=a[j];
}
a[j+1]=temp;
}
}
}
int main()
{
int a[10]={10,25,8,18,22,4,12};
insert(a,6);
return 0;
}
递归:
#include<iostream>
using namespace std;
void insert(int *a,int i,int temp,int j,int len)
{
if(i>len)
return;
if(j>=0 && temp<a[j])
{
a[j+1]=a[j];
insert(a,i,temp,j-1,len);
}
else
{
a[j+1]=temp;
insert(a,i+1,a[i+1],i,len);
}
}
int main()
{
int a[10]={10,25,8,18,22,4,12};
insert(a,1,a[1],0,6);
return 0;
}