Cod sursa(job #1310435)

Utilizator tudoras8tudoras8 tudoras8 Data 6 ianuarie 2015 20:55:16
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#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;
}