Cod sursa(job #748353)

Utilizator DaicuDaicu Alexandru Daicu Data 13 mai 2012 12:30:54
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[500000],b[500000],n;
void citire(){
	f>>n;
	for(int i=0;i<n;i++)
		f>>a[i];
}

void merge(int i,int i1,int j,int j1){
	int k=-1;
	while(i<=i1 && j<=j1){
		if(a[i]>a[j])
			b[++k]=a[j++];
		else
			b[++k]=a[i++];
	}
	while(i<=i1)
		b[++k]=a[i++];
	while(j<=j1)
		b[++k]=a[j++];
	for(int l=0;l<=k;l++)
		a[l+i1-i+1]=b[l];
}

void merge_sort(int i,int j){
	if((i+1)==j)
		a[i]=a[j]^a[i]^(a[j]=a[i]);
	if((i+1)<j){
		int m=(i+j)/2;
		merge_sort(i,m);
		merge_sort(m+1,j);
		merge(i,m,m+1,j);
	}
}

void afisare(){
	for(int i=0;i<n;i++)
		g<<a[i]<<" ";
}

int main(){
	citire();
	merge_sort(0,n-1);
	afisare();
	return 0;
}