Cod sursa(job #2619112)

Utilizator andreea.bucurBucur Andreea andreea.bucur Data 26 mai 2020 23:38:09
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>

using namespace std;

int w[500005];

void interclasare(int v[],int& st,int& mij,int& dr)
{
    int i, j, k;

    i = st;
    j = mij + 1;
    k = 0;
    while(i <= mij && j <= dr)
        if(v[i] <= v[j])
            w[k++] = v[i++];
        else
            w[k++] = v[j++];
    while(i <= mij)
        w[k++] = v[i++];
    while(j <= dr)
        w[k++] = v[j++];
    for(i = st; i <= dr; i++)
        v[i] = w[i - st];
}

void mergesort(int v[],int& st,int& dr)
{
    int mij;

    if(st >= dr)
        return;
    mij = (st + dr) / 2;
    mergesort(v, st, mij);
    mergesort(v, mij + 1, dr);
    interclasare(v, st, mij, dr);
}

int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");

    int n,a[500001];

    f >> n;
    for(int i=0;i<n;i++)
        f >> a[i];
    f.close();

    mergesort(a,0,n-1);

    for(int i=0;i<n;i++)
        g<<a[i]<<' ';
    g << endl;
    g.close();

    return 0;
}