Cod sursa(job #2612033)

Utilizator dariahazaparuHazaparu Daria dariahazaparu Data 8 mai 2020 00:41:47
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <vector>

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() {
    int n;
    int vt[10000];
    std :: cin >> n;
    for (int i = 0; i < n; ++i) {
        std :: cin >> vt[i];
    }
    mergesort(vt, 0, n-1);
    for (int j = 0; j < n; ++j) {
    std :: cout << vt[j] << " ";
    }
    return 0;
}