Cod sursa(job #820792)
Utilizator | Irimescu Stefan wscsprint3r | Data | 21 noiembrie 2012 10:38:10 |
---|---|---|---|
Problema | Sortare prin comparare | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.52 kb |
//
//
#include<stdio.h>
FILE *f=fopen("algsort.in","r"), *g=fopen("algsort.out","w");
long v[500000],inj,i,n,aux,sw,k;
void shell()
{
inj=n;
k=1;
while(inj>1)
{
inj/=2*k;
do{
sw=0;
for(i=1;i<=n-inj;i++)
if(v[i]>v[i+inj])
{
aux=v[i];
v[i]=v[i+inj];
v[i+inj]=aux;
sw++;
}
}while(sw!=0);
}
}
int main()
{
fscanf(f,"%ld",&n);
for(i=1;i<=n;i++)
fscanf(f,"%ld ", &v[i]);
shell();
for(i=1;i<=n;i++)
fprintf(g,"%ld ", v[i]);
fclose(f);
fclose(g);
return 0;
}