Cod sursa(job #1786079)

Utilizator d0rina2011Craciun Dorina d0rina2011 Data 22 octombrie 2016 12:53:31
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int v[500001], n;

void inter(int st,int m,int dr)
{
    int h, i, j, w[500001], k;
    h = st;
    i = st;
    j = m+1;

    while((h <= m) && (j <= dr))
    {
        if(v[h] <= v[j])
        {
            w[i] = v[h++];
        }
        else
        {
            w[i] = v[j++];
        }
        i++;
    }
    while(h <= m)
    {
        w[i++] = v[h++];
    }
    while(j <= dr)
    {
        w[i++] = v[j++];
    }
    for(k = st; k <= dr; ++k)
        v[k] = w[k];
}

void mergesort(int v[], int st, int dr){
    if (st < dr){
        int mij = (st + dr) / 2;
        mergesort(v, st, mij);
        mergesort(v, mij + 1, dr);
        inter(st, mij, dr);
    }
}

int main()
{
    int i;
    fin >> n;
    for (i = 1; i <= n; i++)
        fin >> v[i];
    mergesort(v, 1, n);
    for (i = 1; i <= n; i++)
        fout << v[i] << " ";
    return 0;
}