Cod sursa(job #431172)

Utilizator brainwashed20Alexandru Gherghe brainwashed20 Data 31 martie 2010 18:50:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include<stdio.h>

#define Nmax 500001

int n,v[Nmax],aux[Nmax];

void swap(int st, int mij, int dr) {
	int i,j,t,k;
	
	for(i=st; i<=dr; i++)
		aux[i]=v[i];
	
	i=st; j=mij+1; k=st;
	
	while(i<=mij && j<=dr) 
		if(aux[i]>aux[j]) 
			v[k++]=aux[j++];
		else
			v[k++]=aux[i++];
		
	for(t=i; t<=mij; t++)
		v[k++]=aux[t];
	for(t=j; t<=dr; t++)
		v[k++]=aux[t];
}

void mergesort(int st, int dr) {
	int mij;
	if(st==dr) return;
	mij=(st+dr)/2;
	mergesort(st,mij);
	mergesort(mij+1,dr);
	swap(st,mij,dr);
}

int main() {
	freopen("algsort.in","r",stdin);
	freopen("algsort.out","w",stdout);
	
	int i,n;
	
	scanf("%d",&n);
	for(i=1; i<=n; i++)
		scanf("%d",&v[i]);
	
	mergesort(1,n);
	
	for(i=1; i<=n; i++)
		printf("%d ",v[i]);
	
	return 0;
}