Cod sursa(job #500252)

Utilizator andrei.finaruFinaru Andrei Emanuel andrei.finaru Data 11 noiembrie 2010 19:25:09
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.6 kb
#include<fstream.h>
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,v[500001],s[500001],c;
void interclas(int i, int m, int j)
{
	int x=i,k=1,y=m+1,t=i;
	while(x<=m&&y<=j) if(v[x]<v[y]) s[k++]=v[x++];
			else s[k++]=v[y++];
	while(x<=m) s[k++]=v[x++];
	while(y<=j) s[k++]=v[y++];
	for(k=1;k<=(j-i)+1;k++)v[t++]=s[k];
}

void divimp(int i, int j)
{
	if(i<j) {int m=i+(j-i)/2;
			divimp(i,m);
			divimp(m+1,j);
			interclas(i,m,j);}
}

int main()
{
	f>>n;
	for(c=1;c<=n;c++) f>>v[c];
	divimp(1,n);
	for(c=1;c<=n;c++) g<<v[c]<<' ';
	g<<'\n';
	f.close(); g.close();
	return 0;
}