Cod sursa(job #953452)

Utilizator sorin2kSorin Nutu sorin2k Data 26 mai 2013 11:04:09
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include<fstream>
using namespace std;

void merge(int *a, int *aux, int low, int mid, int high)
{
	int i, j, k;
	for(i = low; i <= high; i++)
		aux[i] = a[i];
	i = k = low; 
	j = mid + 1;
	while(i <= mid && j <= high)
	{
		if(aux[i] < aux[j])
			a[k++] = aux[i++];
		else
			a[k++] = aux[j++];
	}
	while(i <= mid)
		a[k++] = aux[i++];
	while(j <= high)
		a[k++] = aux[j++];
}

void mergeSort(int *a, int *aux, int low, int high)
{
	if(low < high)
	{
		int k = low + (high - low ) / 2;
		mergeSort(a, aux, low, k);
		mergeSort(a, aux, k + 1, high);
		merge(a, aux, low, k, high);
	}
}

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