Cod sursa(job #1019151)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 30 octombrie 2013 18:34:46
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<fstream>
#define dim 500005
using namespace std;


ifstream f("algsort.in");
ofstream g("algsort.out");
int a[dim],b[dim],n;
void swipe(int st,int dr,int mid){
	int i,j;
	i=st;j=mid+1;
	int k=st;
	while(i<=mid && j<=dr){
		
		if(a[i]>a[j]){
			b[k++]=a[j++];
		}
		else{
			b[k++]=a[i++];
		}
	}
	while(i<=mid)
		b[k++]=a[i++];
	while(j<=dr)
		b[k++]=a[j++];
	
	for(i=st;i<=dr;++i)
		a[i]=b[i];
}
void merge(int st,int dr){
	if(st!=dr){
		
		int mid=(st+dr)/2;
		
		merge(st,mid);
		merge(mid+1,dr);
		swipe(st,dr,mid);
		
	}
	else
		return ;
	
	
}
int main () {
	
	f>>n;
	
	for(int i=1;i<=n;++i)
		f>>a[i];
	
	merge(1,n);
	
	for(int i=1;i<=n;++i)
		g<<a[i]<<" ";
	
	return 0;
	
}