Cod sursa(job #771931)

Utilizator BlackLordFMI Alex Oprea BlackLord Data 27 iulie 2012 17:44:31
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int n, x[500002], i;

void interclasare(int p, int u){
	int m, i, j, k, y[500002];
	k=0;
	m=(p+u)/2;
	i=p;
	j=m+1;
	while(i<=m && j<=u)
	{
		if(x[i]<x[j])
		{
			k++;
			y[k]=x[i];
			i++;
		}
		else
		{
			k++;
			y[k]=x[j];
			j++;
		}
	}
	while(i<=m)
	{
		k++;
		y[k]=x[i];
		i++;
	}
	while(j<=u)
	{
		k++;
		y[k]=x[j];
		j++;
	}
	k=0;
	for(i=p; i<=u; i++)
	{
		k++;
		x[i]=y[k];
	}
}

void imparte(int p, int u){
	int m;
	if(p<u)
	{
		m=(p+u)/2;
		imparte(m+1, u);
		imparte(p, m);
		interclasare(p, u);
	}
}

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