Cod sursa(job #590897)

Utilizator shnakoVlad Schnakovszki shnako Data 21 mai 2011 07:12:45
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.66 kb
// ShellSort
#include <stdio.h>
FILE *f=fopen("algsort.in", "r"), *g=fopen("algsort.out", "w");
long i, v[500001], inj, sw, n;

void citeste(void)
{
	fscanf(f, "%ld", &n);
	for( i=1;i<=n;i++)
		fscanf(f, "%ld", &v[i]);
	fclose(f);
}

void shellsort(void)
{
	inj=n;
	while(inj>1)
	{
		inj/=2;
		do{
			sw=0;
			for( i=1;i<=n-inj;i++)
				if(v[i]>v[i+inj])
				{
					v[i]=v[i]^v[i+inj];
					v[i+inj]=v[i]^v[i+inj];
					v[i]=v[i]^v[i+inj];
					sw++;
				}
		}while(sw!=0);
	}
}	

void tipareste(void)
{
	for(i=1;i<=n;i++)
		fprintf(g, "%ld ", v[i]);
	fclose(g);
}

int main()
{
citeste();
shellsort();
tipareste();
return 0;
}