Cod sursa(job #472363)

Utilizator whoasdas dasdas who Data 24 iulie 2010 11:57:12
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <stdio.h>
#include <fstream>
unsigned int a[500005],b[500005], n;
using namespace std;

void merge_sort(int l, int r)
{
	if(l==r) return;
	int m = (l+r)/2;
	
	merge_sort(l,m);
	merge_sort(m+1,r);
	
	int l1=l;	int l2=m+1; 	int lb=1;
	
	while(l1<=m&&l2<=r)
		if(a[l1]<a[l2])
			b[lb++] = a[l1++];
		else
			b[lb++] = a[l2++];
	
	while(l1<=m)
		b[lb++]=a[l1++];

	while(l2<=r)
		b[lb++]=a[l2++];

	for(int i=1;i<lb;i++)
		a[l+i-1] = b[i];
}

int main()
{
	int i;

	ifstream in("algsort.in");
	ofstream out("algsort.out");

	in>>n;
	for(i=1;i<=n;i++) in>>a[i];
	merge_sort(1,n);
	for(i=1;i<=n;i++) out<<a[i]<<" ";

	out.close();
	return 0;
}