递归实现出入排序(C语言)

来源:互联网 发布:大非农数据公布时间 编辑:程序博客网 时间:2024/04/29 17:47
#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[50];
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;
}
0 0
原创粉丝点击