Pagini recente » Cod sursa (job #1484272) | Cod sursa (job #2382100) | Cod sursa (job #98156) | Cod sursa (job #2559733) | Cod sursa (job #1310438)
#include <iostream>
#include <fstream>
#define MAXN 500000
using namespace std;
void merge(int a[], int lo, int mid, int hi) {
int i = lo, j = mid + 1, k = 1, aux[MAXN];
while (i <= mid && j <= hi)
aux[k++] = a[i] < a[j] ? a[i++] : a[j++];
if (i <= mid)
while (i <= mid)
aux[k++] = a[i++];
if (j <= hi)
while (j <= hi)
aux[k++] = a[j++];
for (i = lo, k = 1; i <= hi; i++, k++)
a[i] = aux[k];
}
void mergesort(int a[], int lo, int hi) {
if (hi <= lo) return;
int mid = lo + (hi - lo) / 2;
mergesort(a, lo, mid);
mergesort(a, mid + 1, hi);
merge(a, lo, mid, hi);
}
int main()
{
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n, a[MAXN];
fin >> n;
for (int i = 0; i < n; i++)
fin >> a[i];
mergesort(a, 0, n - 1);
for (int i = 0; i < n; i++)
fout << a[i] << " ";
return 0;
}