Cod sursa(job #2612035)

Utilizator dariahazaparuHazaparu Daria dariahazaparu Data 8 mai 2020 00:46:05
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>

void interclasare(int a[], int st, int dr){
    int mijloc = (st + dr) / 2;

    int i = st;
    int j = mijloc + 1;
    int aux = 0;

    int size = dr - st + 1;
    int arr[size];

    while ( i <= mijloc and j <= dr) {
        if (a[i] < a[j]) {
            arr[aux] = a [i];
            aux++;
            i++;
        } else {
            arr[aux] = a[j];
            aux++;
            j++;
        }
    }

    while (i <= mijloc) {
        arr[aux] = a[i];
        aux++;
        i++;
    }
    while (j <= dr) {
        arr[aux] = a[j];
        aux++;
        j++;
    }

    for (int k = 0; k < aux; ++k) {
        a[st+k] = arr[k];
    }

}

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

}

int main() {
    std :: ifstream fin("algsort.in");
    std :: ofstream fout ( "algsort.out");

    int n;
    int vt[500005];
    fin >> n;
    for (int i = 0; i < n; ++i) {
        fin >> vt[i];
    }
    mergesort(vt, 0, n-1);
    for (int j = 0; j < n; ++j) {
    fout << vt[j] << " ";
    }
    return 0;
}