Cod sursa(job #2968131)

Utilizator SSKMFSS KMF SSKMF Data 20 ianuarie 2023 18:45:30
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.28 kb
#include <fstream>
using namespace std;

ifstream cin ("algsort.in");
ofstream cout ("algsort.out");

int sir[500000] , sort[500000];

void MergeSort (int stanga , int dreapta)
{
    if (stanga < dreapta)
    {
        int mijloc = (stanga + dreapta) / 2;

        MergeSort (stanga , mijloc);
        MergeSort (mijloc + 1 , dreapta);

        int indice_1 = stanga , indice_2 = mijloc + 1 , indice_3 = 0;
        while (indice_1 <= mijloc && indice_2 <= dreapta)
        {
            if (sir[indice_1] < sir[indice_2])
                sort[indice_3++] = sir[indice_1++];
            else
                sort[indice_3++] = sir[indice_2++];
        }
        while (indice_1 <= mijloc)
            sort[indice_3++] = sir[indice_1++];
        while (indice_2 <= dreapta)
            sort[indice_3++] = sir[indice_2++];

        indice_1 = stanga , indice_2 = 0;
        while (indice_1 <= dreapta)
            sir[indice_1++] = sort[indice_2++];
    }
}

int main ()
{
    int lungime;
    cin >> lungime;

    for (int indice = 0 ; indice < lungime ; indice++)
        cin >> sir[indice];

    MergeSort (0 , lungime - 1);

    for (int indice = 0 ; indice < lungime ; indice++)
        cout << sir[indice] << ' ';

    cout.close(); cin.close();
    return 0;
}