Cod sursa(job #368706)

Utilizator cosmin79Carabet Cosmin Andrei cosmin79 Data 25 noiembrie 2009 17:05:56
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#define N 500001
int n,v[N],A[N],r;
void interclaseaza(int st,int dr)
{
	r=0;
	int mij,start2=st,start;
	mij=(st+dr)/2;
	start=mij+1;
	while (start2<=mij && start<=dr)
		if (v[start2]<=v[start])
			A[++r]=v[start2++];
		else
			A[++r]=v[start++];
	while (start2<=mij)
		A[++r]=v[start2++];
	while (start<=dr)
		A[++r]=v[start++];
	for (int i=st; i<=dr; i++)
		v[i]=A[i-st+1];
}
void sorteaza(int st,int dr)
{
	int mij=(st+dr)/2;
	if (st==dr)
		return ;
	sorteaza(st,mij);
	sorteaza(mij+1,dr);
	interclaseaza(st,dr);
}
int main()
{
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	scanf("%d",&n);
	int i;
	for (i=1; i<=n; i++)
		scanf("%d",&v[i]);
	sorteaza(1,n);
	for (i=1; i<=n; i++)
		printf("%d ",v[i]);
	return 0;
}