⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shellpx.c

📁 输入待排数据元素序列
💻 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 + -