Pagini recente » Cod sursa (job #544611) | Cod sursa (job #600625) | Cod sursa (job #89457) | Cod sursa (job #1300886) | Cod sursa (job #1611201)
#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();
}