Cod sursa(job #419415)

Utilizator maditzaaciuca madalina maditzaa Data 17 martie 2010 14:38:27
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
#include <iostream.h>
#include <fstream.h>
#include <math.h>
ifstream f("algsort.in");
ofstream g("algsort.out");

long long v[500000],i,n,m,t,x[51],li,lj,k;
void schimb(int i,int j){
	int aux;
	if(v[i]>v[j]){
		aux=v[i];
		v[i]=v[j];
		v[j]=aux;
	}
}

void merge(int i,int j){
	 k=0;
	 li=i,lj=m+1;
	while(li<=m&&lj<=j)
		if(v[li]<=v[lj])
			x[++k]=v[li++];
		else x[++k]=v[lj++];
	if(li<=m)
		for(t=li;t<=m;t++)
			x[++k]=v[t];
		else for(t=lj;t<=j;t++)
			x[++k]=v[t];
	k=0;
	for(t=i;t<=j;t++)
		v[t]=x[++k];
}
void divide(int i, int j){
	
	if(abs(i-j)<=1)
		schimb(i,j);
	else { m=(i+j)/2;
		divide(i,m);
		divide(m+1,j);
		merge(i,j);
	}
}
int main(){
	f>>n;
	for(i=1;i<=n;i++)
		f>>v[i];
	divide(1,n);
	for(i=1;i<=n;i++)
		g<<v[i]<<" ";
	return 0;
	
	f.close();
	g.close();
}