Cod sursa(job #359928)

Utilizator maditzaaciuca madalina maditzaa Data 28 octombrie 2009 21:36:48
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream.h>
#include<math.h>
#include <fstream.h>
ifstream f("algsort.in");
ofstream g("algsort.out");
long int v[500003],i,n,t;
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){
	int k=0,x[50];
	int m=(i+j)/2;
	int 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){	
	int m=(i+j)/2;
	if(abs(i-j)<=1) 
		schimb(i,j);
	else{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]<<'\n';
	return 0;
  }