#include<stdio.h> #define n 10 void Shellinsert(int *r,int dk) //希尔一趟增量为dk的插入排序 { int i,j; for(i=dk+1;i<=n;i++) if(r[i]<r[i-dk]) { r[0]=r[i]; for(j=i-dk;j>0&&(r[0]<r[j]);j-=dk) r[j+dk]=r[j]; r[j+dk]=r[0]; }//if }//Shellinsert void Shellsort(int *r) { int i; for(i=5;i>0;i--) //每一趟的增量不断缩小,增量从5减少到1,用户可以自行设置 Shellinsert(r,i); }//Shellsort void main() { int r[n+1]; printf("请输入十个数:/n"); for(int m=1;m<=n;m++) scanf("%d",&r[m]); Shellsort(r); printf("排序后:/n"); for(m=1;m<=n;m++) printf("%d ",r[m]); printf("/n"); }