Cod sursa(job #2760163)

Utilizator dey44andIoja Andrei-Iosif dey44and Data 23 iunie 2021 14:16:59
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");

int N, sir[500005], aux[500005];

void Interclasare(int L, int M, int R)
{
    /*
     Primul vector [L, M] -> i
     Al doilea vector [M + 1, R] -> j
    */

    int i = L, j = M + 1, k = 1;
    while(i <= M && j <= R)
        if(sir[i] < sir[j])
        {
            aux[k] = sir[i];
            k++, i++;
        }
        else
        {
            aux[k] = sir[j];
            k++, j++;
        }
    /* Verificam resturile */
    while(i <= M)
    {
        aux[k] = sir[i];
        k++, i++;
    }
    while(j <= R)
    {
        aux[k] = sir[j];
        k++, j++;
    }
    for(i = L; i <= R; i++)
    {
        sir[i] = aux[i - L + 1];
    }
}

void Sortare(int L, int R)
{
    if(L < R)
    {
        int M = (L + R) / 2;
        Sortare(L , M);
        Sortare(M + 1, R);
        Interclasare(L, M, R);
    }
}

int main()
{
    cin >> N;
    for(int i = 1; i <= N; i++)
        cin >> sir[i];
    Sortare(1, N);

    for(int i = 1; i <= N; i++)
        cout << sir[i] << " ";
    return 0;
}