Cod sursa(job #2639845)

Utilizator George1Simion George George1 Data 4 august 2020 11:06:52
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.09 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f ("agsort.in");
ofstream g ("agsort.out");

int a[500002], b[500002];

void interclasare(int a[], int st1, int dr1, int st2, int dr2)
{
    int i = st1;
    int j = st2;
    int k = 0;

    while (i <= dr1 && j <= dr2)
    {
        if (a[i] < a[j])
        {
            b[++k] = a[i];
            i++;
        }
        else
        {
            b[++k] = a[j];
            j++;
        }
    }

    while (i <= dr1)
    {
        b[++k] = a[i];
        i++;
    }

    while (j <= dr2)
    {
        b[++k] = a[j];
        j++;
    }

    for (int t=1; t<=k; ++t)
        a[st1+t-1] = b[t];
}

void mergesort(int a[],int st, int dr)
{
    if (st == dr) return;
    int mij = (st + dr) / 2;
    mergesort(a, st, mij);
    mergesort(a, mij+1, dr);
    interclasare(a, st, mij, mij+1, dr);
}

int main()
{
    int n, i, j;
    f>>n;
    for (i=1;i<=n;i++)
    {
        f>>a[i];
    }

    mergesort(a, 1, n);

    for(j=1;j<=n;j++)
    {
        g<<a[j]<<" ";
    }
}