📄 shellpx.c
字号:
# include <stdio.h>
# define MAXSIZE 20
typedef int RedType;
int r[MAXSIZE+1];
int length;
/*直接插入排序*/
void insert(int r[],int n)
{ int i,j;
for(i=2;i<=n;++i)
if(r[i]<r[i-1])
{ r[0]=r[i];
r[i]=r[i-1];
j=i-2;
while((j>0)&&(r[0]<r[j]))
{r[j+1]=r[j];
j=j-1;}
r[j+1]=r[0];
}
}
/*一趟希而排序*/
void Shellinsert(int r[],int length,int dk)
{ int i,j;
for(i=dk+1;i<=length;++i)
if(r[i]<r[i-dk])
{ r[0]=r[i];
r[i]=r[i-dk];
j=i-dk;
while((j>0)&&(r[0]<r[j]))
{r[j+dk]=r[j];
j=j-dk;}
r[j+dk]=r[0];
}
}
void main()
{ int i=0;
int x=0;
int j;
/*增量序列*/
int d[3]={5,3,1};
/*键盘输入待排序元素序列*/
printf("input the datas:");
while(x!=-1)
{r[i]=x;
i=i+1;
scanf("%d",&x);
}
length=i-1;
printf("the length is:");
printf("%4d\n",length);
/*输出排序前的元素序列*/
printf("the resource datas is:\n");
for(i=1;i<=length;i++)
printf("%4d",r[i]);
printf("\n");
printf("\n");
/*insert(r,length);*/
/*printf("the insert px result datas is:\n");*/
/*for(i=1;i<=length;i++)*/
/* printf("%4d",r[i]);*/
/*进行希而排序,并输出每趟排序结果*/
printf("every shellinsert px result is\n");
for(i=0;i<3;i++)
{Shellinsert(r,length,d[i]);
for(j=1;j<=length;j++)
printf("%4d",r[j]);
printf("\n");
printf("\n");}
/*输出最后的排序结果*/
printf("the shellinsert result datas is:\n");
for(i=1;i<=length;i++)
printf("%4d",r[i]);
printf("\n");
getchar();
getchar();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -