Cod sursa(job #1441289)

Utilizator buzu.tudor67Tudor Buzu buzu.tudor67 Data 24 mai 2015 01:43:56
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
using namespace std;
ifstream fi("algsort.in");
ofstream fo("algsort.out");

const int MAX_N = 500005;

int i,n,a[MAX_N],aux[MAX_N];


void interclasare(int st, int mijl, int dr){
	 int i,j,k=0;
	 
	 for(i=st,j=mijl+1;i<=mijl && j<=dr;)
	   if(a[i]<a[j]) aux[++k]=a[i++];
	   else aux[++k]=a[j++];
	   
	 for(;i<=mijl;i++) aux[++k]=a[i];
	 for(;j<=dr;j++) aux[++k]=a[j];
	 
	 for(i=st;i<=dr;i++) a[i]=aux[i-st+1]; 
}

void sortare(int st, int dr){
	 if(st==dr) return;
	 int mijl = (st+dr)/2;
	 sortare(st,mijl);
	 sortare(mijl+1,dr);
	 interclasare(st,mijl,dr);
}

int main(){
	fi>>n;
	for(i=1;i<=n;i++) fi>>a[i];
	
	sortare(1,n);
	
	for(i=1;i<=n;i++) fo<<a[i]<<" ";
	
	fi.close();
	fo.close();
	return 0;
}