#include<stdio.h>
void Insert(int *a,int n)//把数组a的第n个数插入前n-1个数中,注意前n-1个数已经是排好序的了
{
int i=n-1;
int key=a[n];
while((i>=0)&&(key<a[i]))
{
a[i+1]=a[i];
i--;
}
a[i+1]=key;
return;
}
void InsertionSort(int *a,int n)//递归插入,跟求阶乘的思想一样,前n-1个排好序的数组,是建立在前n-2个排好序的数组的基础上插出来的
{
if(n>0)
{
InsertionSort(a,n-1);
Insert(a,n);
}
else
return;
}
void main()
{
int i,n,a[30];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
InsertionSort(a,n-1);
for(i=0;i<n;i++)
{
printf("%d ",a[i]);
}
return;
}
插入排序的递归实现
最新推荐文章于 2025-05-20 22:05:51 发布