Cod sursa(job #2890806)

Utilizator David8406Marian David David8406 Data 16 aprilie 2022 17:56:51
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <bits/stdc++.h>

using namespace std;
int n,m,a[500005],aux[500005],x;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void interclasare(int st1,int dr1,int st2, int dr2)
{
    int ind1=st1;
    int ind2=st2;
    int nr=0;
    while (ind1<=dr1 && ind2<=dr2)
    {
        if( a[ind1]<=a[ind2])
        {
            nr++;
            aux[nr]=a[ind1];
            ind1++;
        }
        else
        {
            nr++;
            aux[nr]=a[ind2];
            ind2++;
        }
    }
    while (ind1<=dr1)
    {
        nr++;
        aux[nr]=a[ind1];
        ind1++;
    }
    while (ind2<=dr2)
    {
        nr++;
        aux[nr]=a[ind2];
        ind2++;
    }
    for (int i=1;i<=nr;i++)
        a[i+st1-1]=aux[i];
}
void merge_sort(int st,int dr)
{
    int mij;
    if (st==dr) return;
    mij=(st+dr)/2;
    merge_sort(st,mij);
    merge_sort(mij+1,dr);
    interclasare(st,mij,mij+1,dr);
}
int main()
{
    fin>>n;
    for (int i=1;i<=n;i++) fin>>a[i];
    merge_sort(1,n);
    for (int i=1;i<=n;i++)
        fout<<a[i]<<" ";
}