Cod sursa(job #2948046)

Utilizator biancaivascuBianca Ivascu biancaivascu Data 27 noiembrie 2022 09:26:00
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.1 kb
#include <iostream>
#include <fstream>

using namespace std;

#define MaxN 500000

int v[MaxN];
int v1[MaxN];

void intercls(int st, int dr)
{
    int mij=(st+dr)/2, i, poz1=st, poz2=mij+1;
    i=st;
    while(poz1<=mij && poz2<=dr)
    {
        if(v[poz1]<v[poz2])
        {
            v1[i]=v[poz1];
            poz1++;
        }
        else
        {
            v1[i]=v[poz2];
            poz2++;
        }
        i++;
    }
    while(poz1<=mij)
    {
        v1[i]=v[poz1];
        poz1++;
        i++;
    }
    while(poz2<=dr)
    {
        v1[i]=v[poz2];
        poz2++;
        i++;
    }
    for(i=st; i<=dr; i++)
    {
        v[i]=v1[i];
    }
}
void msort(int st, int dr)
{
    if(st==dr) return;

    int mij=(dr+st)/2;
    msort(st, mij);
    msort(mij+1, dr);

    intercls(st, dr);
}
int main()
{
    ifstream in("algsort.in");
    ofstream out("algsort.out");
    int n, i;
    in>>n;
    for(i=0; i<n; i++)
    {
        in>>v[i];
    }

    msort(0, n-1);
    for(i=0; i<n; i++)
    {
        out<<v[i]<<" ";
    }
    return 0;
}