//排序2有问题,懒得改了
#include <stdio.h>
void shuchu(int* x,int l);
void sort1(int* x,int l);
void sort2(int* x,int l,int i,int j);
void sort3(int* x,int m);
int main()
{
int l,n;
printf("请输入数组长度:");
scanf("%d",&l);
int x1[l],x2[l],x3[l];
for(int i=0;i<l;i++)
{
printf("请输入第%d个数:",i+1);
scanf("%d",&n);
x1[i]=n;
x2[i]=n;
x3[i]=n;
}
shuchu(x1,l);
sort1(x1,l);
shuchu(x1,l);
sort2(x2,l,l-1,l-2);
shuchu(x2,l);
sort3(x3,l-1);
shuchu(x3,l);
}
//输出数组函数
void shuchu(int* x,int l)
{
for(int i=0;i<l;i++)
{
printf("%d\t",x[i]);
}
printf("\n");
}
//插入排序函数1
void sort1(int* x,int l)
{
for(int i=l-1;i>0;i--)
{
for(int j=i-1;j>=0;j--)
{
if(x[i]<x[j])
{
int n=x[i];
for(int m=i;m>j;m--)
{
x[m]=x[m-1];
}
x[j]=n;
i++;
break;
}
}
}
}
void sort2(int* x,int l,int i,int j)
{
if(i>0)
{
if(j>=0)
{
if(x[i]<x[j])
{
int n=x[i];
for(int m=i;m>j;m--)
{
x[m]=x[m-1];
}
x[j]=n;
i++;
}
j--;
}
i--;
sort2(x,l,i,j);
}
}
void sort3(int* x,int m)
{
if(m!=0)
{
sort3(x,m-1);
int n=x[m];
for(int i=m-1;i>=0;i--)
{
if(i==0)
{
if(n<=x[i])
{
for(int j=m;j>i;j--)
{
x[j]=x[j-1];
}
x[i]=n;
break;
}
}
else if((n<=x[i])&&(n>x[i-1]))
{
for(int j=m;j>i;j--)
{
x[j]=x[j-1];
}
x[i]=n;
break;
}
}
}
}
lq2.5用递归改写插入排序
最新推荐文章于 2021-03-30 21:58:42 发布