Cod sursa(job #3241649)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 1 septembrie 2024 18:41:16
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>
using namespace std;
ifstream  fin("algsort.in");
ofstream fout("algsort.out");
int n,a[500009],b[500009];

void citire()
{
    ios_base::sync_with_stdio(false);

    fin>>n;

    for(int i=1; i<=n; i++)
    {
        fin>>a[i];
    }
}

void interclasare(int st, int dr)
{
    int i,j,k,pmijl;
    pmijl=(st+dr)/2;
    i=st;
    j=pmijl+1;
    k=st;

    while(i<=pmijl && j<=dr)
    {
        if(a[i]<a[j])
        {
            b[k++]=a[i++];
        }
        else
        {
            b[k++]=a[j++];
        }
    }

    while(i<=pmijl)
    {
        b[k++]=a[i++];
    }

    while(j<=dr)
    {
        b[k++]=a[j++];
    }

    for(i=st; i<=dr; i++)
    {
        a[i]=b[i];
    }
}
void Merge_Sort(int st, int dr)
{
    int pmijl;

    if(st<dr)
    {
        pmijl=(st+dr)/2;
        Merge_Sort(st,pmijl);
        Merge_Sort(pmijl+1,dr);
        interclasare(st,dr);
    }
}

void afisare()
{
    for(int i=1; i<=n; i++)
    {
        fout<< a[i] << " ";
    }
}

int main()
{
    citire();
    Merge_Sort(1,n);
    afisare();

    return 0;
}