#include<stdio.h>#include<stdlib.h>voidShellSort(inta[],intn){inti,j,temp,in,key;in=n;while(in>1){in=in/3+1;for(i=in;i<n;i++){key=a[i];j=i-in;while(j>=0){if(key<a[j]){temp=a[j];a[j]=key;a[j+in]=temp;}j=j-in;}}}}voidPrint(inta[],intn){inti;for(i=0;i<n;i++){printf("%5d",a[i]);}}intmain(void){int*a;intn,i;printf("请输入数组长度n=");scanf("%d",&n);a=(int*)malloc(n*sizeof(int));printf("输入数组=");for(i=0;i<n;i++){scanf("%d",&a[i]);}ShellSort(a,n);Print(a,n);return0;}