Cod sursa(job #1013391)

Utilizator Lucian-GeorgeFMI Popa Lucian George Lucian-George Data 20 octombrie 2013 20:44:10
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.76 kb
#include<iostream>
#include<fstream>

using namespace std;
int v[500000],vec[500000];
void merge (int a, int q, int b)
	{
		int i=0,p1,p2;
		p1=a; p2=q+1;
		
		while (p1<=q || p2<=b)
			if (p1<=q && p2<=b)
				if (v[p1]<v[p2])
					vec[++i]=v[p1++];
				else 
					vec[++i]=v[p2++];
			else if (p1<=q)
				vec[++i]=v[p1++];
			else
				vec[++i]=v[p2++];
		
		for (i=a; i<=b; i++)
			v[i]=vec[i-a+1];
	}


void sort (int a, int b)
	{	int q;
		if (a<b)
			{
				q=(a+b)/2;
				sort (a,q);
				sort (q+1,b);
				merge (a,q,b);
			}
	}

int main()
{
	int n,i;
	
	ifstream f("algsort.in");
	ofstream g("algsort.out");
	
	f>>n;
	for (i=1; i<=n; i++)
		 f>>v[i];
		
	sort (1,n);
	for(i=1; i<=n; i++)
		g<<v[i]<<" ";
	
	return 0;
}