1 #include<stdio.h>
2 #include<time.h>
3 #define MAX 20
4 #define RANDOM(x) rand()%x
5 void shell_sort(int *arr,int n)
6 {
7
8 int i,j,k,temp,gap;
9 int gaps[]={1,4,13,100,301,};
10 for(k=0;gaps[k]<n;k++);
11 while(--k>=0)
12 {
13 gap=gaps[k];
14 for(i=gap;i<n;i++)
15 {
16 temp=arr[i];
17 j=i;
18 while(arr[j-gap]>temp&&j>=gap)
19 {
20 arr[j]=arr[j-gap];
21 j=j-gap;
22 }
23 arr[j]=temp;
24 }
25 }
26 }
27 int main()
28 {
29 int arr[MAX];
30 int i;
31 srand(time(0));
32 for(i=0;i<MAX;i++)
33 {
34 arr[i]=RANDOM(100);
35 printf("%d ",arr[i]);
36 }
37 printf("\n");
38 shell_sort(arr,MAX);
39 for(i=0;i<MAX;i++)
40 {
41 printf("%d ",arr[i]);
42 }
43 printf("\n");
44 }