Cod sursa(job #1450102)

Utilizator ArkinyStoica Alex Arkiny Data 11 iunie 2015 13:46:01
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.83 kb
#include<fstream>
using namespace std;
#define MAX 500001
unsigned int v[MAX],x[MAX];
void interclasare(unsigned int x[],int sx,int fx,int sy,int fy)
{
	int i=sx,j=sy,k=0;
	while(i<=fx && j<=fy)
	{
		if(x[i]<=x[j])
		{
			v[++k]=x[i];
			++i;
		}
		else
		{
			v[++k]=x[j];
			++j;
		}
	}
	if(i>fx)
		for(int t=j;t<=fy;++t)
			v[++k]=x[t];
	if(j>fy)
		for(int t=i;t<=fx;++t)
			v[++k]=x[t];

	for(int i=1;i<=k;i++)
	   x[sx+i-1]=v[i];

}

void mergesort(unsigned int x[],int s,int f)
{
  if(s!=f)
  {
	mergesort(x,s,(s+f)/2);
	mergesort(x,(s+f)/2+1,f);
	interclasare(x,s,(s+f)/2,(s+f)/2+1,f);
  }
}

int main()
{
	ifstream in("algsort.in");
	ofstream out("algsort.out");
	int n;
	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]<<" ";
	return 0;
}