Cod sursa(job #1010640)

Utilizator stanescu.raduRadu Stanescu stanescu.radu Data 15 octombrie 2013 13:06:22
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include<fstream>
using namespace std;

ifstream f ("algsort.in");
ofstream g("algsort.out");
int n,v[500001],i,j;

void merge(int st,int x, int dr)
{
	int i=st, j=x+1, aux[500001];
	int k=0;
	while (i<=x && j<=dr)
	{
		if (v[i]<v[j])
		{
			aux[++k]=v[i];
			i++;
		}
		else 
		{
			aux[++k]=v[j];
			j++;
		}
	}
	while (i<=x)
	{
		aux[++k]=v[i];
		i++;
	}
	while (j<=dr)
	{
		aux[++k]=v[j];
		j++;
	}
	k=0;
	for (i=st;i<=dr;i++)
		v[i]=aux[++k];
}

void swap (int a, int b)
{
	if (v[a]>v[b])
	{
		int aux=v[a];
		v[a]=v[b];
		v[b]=aux;
	}
}

void merges(int s,int d)
{
	int x;
	if ((d-s)<1) swap(s,d);
	else
	{
		x=(s+d)/2;
		merges(s,x);
		merges(x+1,d);
		merge(s,x,d);
	}
}

int main ()
{
	f>>n;
	for (i=1;i<=n;i++)
		f>>v[i];
	merges(1,n);
	for (i=1;i<=n;i++)
		g<<v[i]<<" ";
	return 0;
}