Pagini recente » Cod sursa (job #145264) | Cod sursa (job #341998) | Cod sursa (job #3209801) | Cod sursa (job #322422) | Cod sursa (job #2649975)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
int numbers[500001];
int aux[500001];
void mergesort(int start, int stop) {
if (start >= stop)
return;
int middle = (start + stop) / 2;
mergesort(start, middle);
mergesort(middle + 1, stop);
int i = start, j = middle + 1;
for(int k=start; k<=stop; ++k) {
if (i <= middle && (j>stop || numbers[i] < numbers[j]))
aux[k] = numbers[i++];
else
aux[k] = numbers[j++];
}
memcpy(numbers + start, aux + start, (stop - start + 1) * sizeof(numbers[0]));
}
int main() {
fin >> n;
for (int i=0; i<n; ++i)
fin >> numbers[i];
mergesort(0, n-1);
for(int i=0; i<n; ++i)
fout << numbers[i] << ' ';
return 0;
}