Cod sursa(job #371362)
| Utilizator | Data | 5 decembrie 2009 00:09:04 | |
|---|---|---|---|
| Problema | Sortare prin comparare | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva educationala | Marime | 0.45 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=3;h<=n;h=h*2+1);
do
{h/=2;
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;
}
