Cod sursa(job #2864323)

Utilizator Ana100Ana-Maria Tomoiala Ana100 Data 7 martie 2022 19:36:20
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.15 kb
#include <fstream>

using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
const int NMAX=5e5+1;
int v[NMAX],aux[NMAX];
void interclasare(int left1,int right1,int left2, int right2)
{
    int i=left1,j=left2,k=left1-1;
    while(i<=right1 and j<=right2)
    {
        if(v[i]<v[j])
        {
            k++;
            aux[k]=v[i];
            i++;
        }
        else if(v[i]>=v[j])
        {
            k++;
            aux[k]=v[j];
            j++;
        }
    }
    while(i<=right1)
    {
        k++;
        aux[k]=v[i];
        i++;
    }
    while(j<=right2)
    {
        k++;
        aux[k]=v[j];
        j++;
    }
    for(int j=left1;j<=k;j++)
    {
        v[j]=aux[j];
    }
}
void mergesort(int left, int right)
{
    if(left==right)
        return;
    int med=(left+right)>>1;
    mergesort(left,med);
    mergesort(med+1,right);
    interclasare(left,med,med+1,right);
}
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>v[i];
    }
    mergesort(1,n);
    for(int i=1;i<=n;i++)
    {
        cout<<v[i]<<" ";
    }
    return 0;
}