Cod sursa(job #371359)
| Utilizator | Data | 4 decembrie 2009 23:52:18 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.46 kb |
#include <stdio.h>
#define N 500001
int sir[N];
int main ()
{freopen("algsort.in","r",stdin);
int i,n,j,h,t,k;
scanf("%d",&n);
for (i=0;i<n;i++)
{scanf("%d",&sir[i]);
}
freopen("algsort.out","w",stdout);
for (h=4;h<=n;h=h*3+1);
do
{h/=3;
for (i=h;i<n;i++)
{t=sir[i];
for (k=i;k>=h&&sir[k-h]>t;k-=h)
{sir[k]=sir[k-h];
}
sir[k]=t;
}
}
while(h!=1);
for (i=0;i<n;i++)
{printf("%d ",sir[i]);
}
return 0;
}
