Cod sursa(job #2307244)

Utilizator eduardandrei20Nechifor Eduard Andrei eduardandrei20 Data 24 decembrie 2018 07:46:52
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <iostream>
#include <fstream>

using namespace std;

const int dim = 500000;

void interclasare(int v[], int left, int right, int mid) {

    int aux[dim], i, j;
    i = left, j = mid +1;
    int contor = left - 1;

    while (i <= mid and j <= right) {
        if (v[i] <= v[j]) {
            aux[++contor] = v[i];
            i++;
        } else {
            aux[++contor] = v[j];
            j++;
        }
    }

    while (i <= mid) {
        aux[++contor] = v[i];
        i++;
    }
    while (j <= right) {
        aux[++contor] = v[j];
        j++;
    }

    for (i = left; i <= right; i++)
        v[i] = aux[i];
}

void mergeSort(int v[], int left, int right) {

    if (left >= right) {
        return;
    }

    int mid = (left + right) / 2;
    mergeSort(v, left, mid);
    mergeSort(v, mid + 1, right);

    interclasare(v, left, right, mid);
}

int main() {
    int v[dim], n;
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);

    //Input
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> v[i];
    //Solve
    interclasare(v, 0, n - 1, (n-1)/2);
    //Print
    for (int i = 0; i < n; i++)
        cout << v[i] << " ";

    return 0;
}