Cod sursa(job #1365512)

Utilizator Vali_DeaconuVali Deaconu Vali_Deaconu Data 28 februarie 2015 12:37:09
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#include <fstream>
#define N   500005
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int a[N], c[N];
void interclaseaza (int p, int mid, int u) {
    int i = p,
        j = mid+1,
        k = p-1;

    while (i <= mid && j <= u)
        if (a[i] > a[j])
            c[++k] = a[j++];
        else
            c[++k] = a[i++];

    for (;i<=mid;i++)
        c[++k] = a[i];
    for (;j<=u;j++)
        c[++k] = a[j];

    for (i=p; i<=u; i++)
        a[i] = c[i];
}
void sorteaza (int p, int u) {
    if (p < u) {
        int mid = (p+u)/2;
        sorteaza (p, mid);
        sorteaza (mid+1, u);
        interclaseaza(p, mid, u);
    }
}
int i, n;
int main() {
    fin >> n;
    for (i=1; i<=n; ++i)
        fin >> a[i];
    sorteaza (1, n);
    for (i=1; i<=n; ++i)
        fout << a[i] << " ";
    return 0;
}