Cod sursa(job #2716994)

Utilizator Teodora1314Teodora Oancea-Negoita Teodora1314 Data 6 martie 2021 08:18:37
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.87 kb
//#include <iostream>
#include <fstream>
using namespace std;

ifstream cin ("algsort.in");
ofstream cout ("algsort.out");

int n,a[500005];

void interclas (int p, int mij, int q)
{
    int i,j,k,b[500005];
    i=p;
    j=mij+1;
    k=0;
    while(i<=mij && j<=q)
    {
        if(a[i]<a[j])
        {
            b[++k]=a[i++];
        }
        else b[++k]=a[j++];
    }
    while(i<=mij)
        b[++k]=a[i++];
    while(j<=q)
        b[++k]=a[j++];
    int t=1;
    for(i=p;i<=q;i++)
    {
        a[i]=b[t++];
    }
}

void divide(int p, int q)
{
    int mij=(p+q)/2;
    if(p<q)
    {
        divide(p,mij);
        divide(mij+1,q);
        interclas(p,mij,q);
    }

}

int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    divide(1,n);
    for(int i=1;i<=n;i++)
        cout<<a[i]<<' ';
    return 0;
}