Cod sursa(job #1196681)

Utilizator stef93Stefan Gilca stef93 Data 8 iunie 2014 19:11:16
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.99 kb
/*
 * main.cpp
 *
 *  Created on: Jun 8, 2014
 *      Author: stefan
 */

#include <fstream>

using namespace std;

int b[500002];

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

		else {
			b[k] = a[j];
			j = j + 1;
		}
		k = k + 1;
	}
	while (i <= mid) {
		b[k] = a[i];
		i = i + 1;
		k = k + 1;
	}
	while (j <= high) {
		b[k] = a[j];
		j = j + 1;
		k = k + 1;
	}
	for (k = low; k <= high; k++)
		a[k] = b[k];
}
void merge_sort(int a[], int low, int high) {
	if (low < high) {
		int mid = (low + high) / 2;
		merge_sort(a, low, mid);
		merge_sort(a, mid + 1, high);
		merge(a, low, mid, high);
	}
}
int main() {
	int a[500003];
	int n;

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

	in >> n;

	for (int i = 0; i < n; i++) {
		in >> a[i];
	}

	merge_sort(a, 0, n - 1);

	for (int i = 0; i < n; i++) {
		out << a[i] << ' ';
	}

	out.close();
	return 0;
}