Cod sursa(job #2940325)

Utilizator Chris_BlackBlaga Cristian Chris_Black Data 15 noiembrie 2022 11:52:34
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <iostream>

using namespace std;
int v[500009];
int a[500009];
void Unire(int st1,int dr1,int st2,int dr2)
{
    for(int i=st1;i<=dr1;++i)a[i] = v[i];
    for(int j=st2;j<=dr2;++j)a[j] = v[j];

    int k = min(st1,st2);
    int i = st1,j = st2;
    while(i<=dr1&&j<=dr2)
    {
        if(a[i]<a[j])
            v[k++]=a[i++];
        else v[k++]=a[j++];
    }
    while(i<=dr1)v[k++]=a[i++];
    while(j<=dr2)v[k++]=a[j++];
}
void Mergesort(int st,int dr)
{
    if(st<dr)
    {
        int mij = (st+dr)/2;
        Mergesort(st,mij);
        Mergesort(mij+1,dr);
        Unire(st,mij,mij+1,dr);
    }
}

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