Cod sursa(job #1337294)

Utilizator ArkinyStoica Alex Arkiny Data 8 februarie 2015 20:35:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include<iostream>
#include<fstream>
using namespace std;

unsigned int x[500002],z[500002],n;

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

void interclasare(unsigned int x[],int s1,int e1,int s2,int e2)
{
	int i=s1,j=s2;
	int nz=1;
	while(i<=e1 && j<=e2)
	{
		if(x[i]<x[j])
		{
			z[nz++]=x[i];
			++i;
		}
		else
		{
			z[nz++]=x[j];
			++j;
		}
	}
	if(i>e1)
		for(int k=j;k<=e2;k++)
		{
			z[nz++]=x[k];
		}
	if(j>e2)
		for(int k=i;k<=e1;k++)
		{
			z[nz++]=x[k];
		}
	for(int i=s1,j=1;i<=e2;i++,j++)
		x[i]=z[j];
}
void mergesort(unsigned int x[],int s,int e)
{
	if(s<e)
	{
	
	  mergesort(x,s,(e+s)/2);
	  mergesort(x,(e+s)/2 +1,e);

	  interclasare(x,s,(e+s)/2,(e+s)/2 +1,e);

	}
}
int main()
{
	in>>n;

	for(int i=1;i<=n;i++)
		in>>x[i];

    mergesort(x,1,n);

	for(int i=1;i<=n;i++)
		out<<x[i]<<" ";

	in.close();
	out.close();
	return 0;
}