Cod sursa(job #2553939)

Utilizator maria.osman10Osman Maria maria.osman10 Data 22 februarie 2020 13:25:49
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <iostream>
#include <fstream>
using namespace std;
//ifstream cin("algsort.in");
//ofstream cout("algsort.out");

#define NMAX 500004

int v[NMAX];
int aux[NMAX];

void sorteaza(int left, int right)
{
    int p1,p2,i,j;
    if(left>=right)
        return;
    int mid=(left+right)/2;
    sorteaza(left,mid);
    sorteaza(mid+1,right);
    p1=left;
    p2=mid+1;
    j=1;
    while(p1<=mid||p2<=right)
    {
         if(p1>mid)
         {
            aux[j]=v[p2];
            j++;
            p2++;
            continue;
         }
        if(p2>right)
        {
            aux[j]=v[p1];
            j++;
            p1++;
            continue;
        }

        if(v[p1]>v[p2])
        {
           aux[j]=v[p2];
            p2++;
            j++;
        }
        else
        {
            aux[j]=v[p1];
            p1++;
            j++;
        }

    }
    for(i=1;i<j;i++)
     {
         v[i + left - 1]=aux[i];
     }

}
int main()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    int n,i;
    cin>>n;
    for(i=1;i<=n;i++)
    {
        cin>>v[i];
    }
    sorteaza(1,n);
    for(i=1;i<=n;i++)
    cout<<v[i]<<" ";
    return 0;
}