Cod sursa(job #794441)

Utilizator Ionut228Ionut Calofir Ionut228 Data 6 octombrie 2012 12:35:00
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<fstream>
using namespace std;

ifstream f("algsort.in");
ofstream g("algsort.out");

int n,i,j,v[500001],w[500001];

void interc (int l, int m, int r)
{
	int k=l-1;
	i=l;
	j=m+1;
	while(i<=m && j<=r)
	{
		if(v[i]<v[j])
		{
			k++;
			w[k]=v[i];
			i++;
		}
		else
		{
			k++;
			w[k]=v[j];
			j++;
		}
	}
	while(i<=m)
	{
		k++;
		w[k]=v[i];
		i++;
	}
	while(j<=r)
	{
		k++;
		w[k]=v[j];
		j++;
	}
	for(i=l;i<=r;i++)
		v[i]=w[i];
}

void MergeSort (int l, int r)
{
	if(l==r)
		return;
	int mij=(l+r)/2;
	MergeSort (l,mij);
	MergeSort (mij+1,r);
	interc (l,mij,r);
}

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