希尔排序
1 //希尔排序 2 #include <stdio.h> 3 4 void main() 5 { 6 int a[11], i; 7 int shell(int a[], int n); 8 printf("请输入十个数据:"); 9 for(i = 1; i<11; i++) 10 { 11 scanf("%d", &a[i]); 12 } 13 printf("初始序列:\n"); 14 for(i = 1; i<11; i++) 15 { 16 printf(" %d", a[i]); 17 } 18 shell(a, 10); 19 printf("\n希尔排序后的顺序:\n"); 20 for(i = 1; i<11; i++) 21 { 22 printf(" %d", a[i]); 23 } 24 printf("\n"); 25 } 26 27 int shell(int a[], int n) 28 { 29 int j, k, d; 30 for(d=n/2; d>=1; d=d/2) 31 { 32 for(j=d+1; j<=n; j++) 33 { 34 a[0] = a[j]; 35 for(k=j-d; (k>=0) && a[k]>a[0]; k=k-d) 36 { 37 a[k+d] = a[k]; 38 } 39 a[k+d] = a[0]; 40 } 41 } 42 }