Cod sursa(job #1294342)

Utilizator deea101Andreea deea101 Data 17 decembrie 2014 13:10:13
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include <fstream>
#include <algorithm>
#define NMAX 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");

int a[NMAX],b[NMAX],N;

void merge(int sir[], int res[], int S, int F)
{
	int mid=S+(F-S)/2+1,piv=mid;
	int aux=S;
	
	for(int i=S;i<=F;i++)
	{
		if(S<mid && (piv>F || sir[S]<=sir[piv]))
			res[i]=sir[S++];
		
		else
			res[i]=sir[piv++];
	}
	
	for(int i=aux;i<=F;i++)
		sir[i]=res[i];
}


void mergesort(int sir[],int res[],int S,int F)
{
	int mid;
	mid=S+(F-S)/2;
	
	if(F-S>=1)
	{
		mergesort(sir,res,S,mid);
		mergesort(sir,res,mid+1,F);
		merge(sir,res,S,F);
	}
}

	
int main()
{
	int i;
	f>>N;
	for(i=1;i<=N;i++)
		f>>a[i];
	
	mergesort(a,b,1,N);
	
	for(i=1;i<=N;i++)
		g<<a[i]<<'\n';
	
}