Cod sursa(job #1611201)

Utilizator WongravenWongraven Wongraven Data 23 februarie 2016 23:19:25
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <iostream>
#include <stdlib.h>
#include <fstream>

using namespace std;

int *aux;

void merge_sort(int* array, int begin, int end) {
	int i, j, k;

	if (end - begin < 1)
		return;
	merge_sort(array, begin, (begin + end) / 2);
	merge_sort(array, (begin + end) / 2 + 1, end);

	for (i = begin, j = (begin + end) / 2 + 1, k = begin; k <= end; ++k) {
		if (j > end || i <= (begin + end) / 2 && array[i] <= array[j]) {
			aux[k] = array[i];
			i = i + 1;
		} else {
			aux[k] = array[j];
			j = j + 1;
		}
	}

	for (i = begin; i <= end; ++i) {
		array[i] = aux[i];
	}
}



int main() {

	int *array;
	int n , i;

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

	f >> n;

	array = (int*)malloc(n * sizeof(int));
	aux = (int*)malloc(n * sizeof(int));
	
	for ( i = 0; i < n; ++i) {
		f >> array[i];
	}
	
	merge_sort(array, 0, n -1);

	for ( i = 0; i < n; ++i) {
		g << array[i] <<" ";
	}

	free(array); 
	free(aux);

	f.close();
	g.close();
}