Cod sursa(job #870127)

Utilizator mihai27Mihai Popescu mihai27 Data 2 februarie 2013 21:49:03
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<fstream>

using namespace std;

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

int n,i,j,k,q,a[500001],b[500001];

void interclasare(int st,int dr)
{
	int m=(st+dr)/2;
	
	i=st;
	j=m+1;
	k=st;
	
	while (i<=m && j<=dr)
		if (a[i]<a[j])
		{
			b[k]=a[i];
			k++;
			i++;
		}
		else
		{
			b[k]=a[j];
			k++;
			j++;
		}
		
	for (q=i;q<=m;q++)
	{
		b[k]=a[q];
		k++;
	}
	for (q=j;q<=dr;q++)
	{
		b[k]=a[q];
		k++;
	}
	
	for (i=st;i<=dr;i++)
		a[i]=b[i];
}

void mergesort(int st,int dr)
{
	int m=(st+dr)/2;
	
	if (dr-st>1)
	{
		mergesort(st,m);
		mergesort(m+1,dr);
	}
	
	interclasare(st,dr);
}

int main()
{
	in>>n;
	for (i=1;i<=n;i++)
		in>>a[i];
	
	mergesort(1,n);
	
	for (i=1;i<=n;i++)
		out<<a[i]<<' ';
}