Cod sursa(job #601663)

Utilizator vlad.doruIon Vlad-Doru vlad.doru Data 7 iulie 2011 13:26:50
Problema Sortare prin comparare Scor 80
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>

using namespace std;

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

const int N=5000001;

int n;
long long v[N],aux[N];

void Interclasare(int st, int dr){
	int i=st,k=st,m=(st+dr)/2,j;
	j=m+1;
	while(i<=m&&j<=dr){
		if(v[i]<v[j])
			aux[k++]=v[i++];
		else
			aux[k++]=v[j++];
	}
	while(i<=m)
		aux[k++]=v[i++];
	while(j<=dr)
		aux[k++]=v[j++];
	for(i=st;i<=dr;i++){
		v[i]=aux[i];
	}
}

void Mergesort(int st,int dr){
	int m=(st+dr)/2;
	if(st==dr)
		return;
	Mergesort(st,m);
	Mergesort(m+1,dr);
	Interclasare(st,dr);
}

int main(){
	int i;
	in>>n;
	for(i=1;i<=n;i++){
		in>>v[i];
	}
	Mergesort(1,n);
	for(i=1;i<=n;i++){
		out<<v[i]<<" ";
	}
	return 0;
}