Cod sursa(job #3241109)

Utilizator Gabriel_DaescuDaescu Gabriel Florin Gabriel_Daescu Data 26 august 2024 15:47:20
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 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;
}