Cod sursa(job #1239328)

Utilizator radudorosRadu Doros radudoros Data 8 octombrie 2014 19:16:34
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;

int a[500000];

void interclasare( int ii, int m, int s)
{
	int n1 = ii;
	int n2 = m + 1;
	int b[500000];
	int k = 0;
	while (n1 <= m && n2 <= s)
	{
		if (a[n1] <= a[n2])
		{
			b[k] = a[n1];
			k++;
			n1++;
		}
		else
		{
			b[k] = a[n2];
			k++;
			n2++;
		}

	}
	if (n1 > m)
	{
		while (n2 <= s)
		{
			b[k] = a[n2];
			k++;
			n2++;
		}
	}
	else
	{
		while (n1 <= m)
		{
			b[k] = a[n1];
			k++;
			n1++;
		}
	}
	n1 = ii;
	for (int i = 0; i < k; i++)
	{
		a[n1] = b[i];
		n1++;
	}
}

void mergesort(int i, int s)

{
	if (i != s)
	{
		mergesort(i, (i + s) / 2);
		mergesort((i + s) / 2 + 1, s);
		interclasare( i, (i + s) / 2, s);

	}
	if (a[i] == 2);
}


int main()
{
	ifstream fin("algsort.in");
	ofstream fout("algsort.out");
	int n;
	fin >> n;
	for (int i = 0; i < n; i++)
	{
		fin >> a[i];
	}
	mergesort(0, n-1);
	for (int i = 0; i < n; i++)
	{
		fout << a[i] << ' ';
	}
}