Cod sursa(job #3031027)

Utilizator anamariatoaderAna Toader anamariatoader Data 18 martie 2023 12:59:55
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.02 kb
#include <bits/stdc++.h>
#include <algorithm>

using namespace std;

void mergesort(int *v, int left, int right)
{
    if (left == right)
        return;

    int mid = left + (right - left) / 2;

    mergesort(v, left, mid);
    mergesort(v, mid + 1, right);

    int aux[right - left + 1];
    int i = left, j = mid + 1, k = 0;

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

    while (i <= mid)
        aux[k++] = v[i++];

    while (j <= right)
        aux[k++] = v[j++];

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

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

    int n;
    fin >> n;

    int *v = (int*) malloc (n * sizeof(int));
    if (!v) return -1;

    for (int i = 0; i < n; i++)
        fin >> v[i];

    mergesort(v, 0, n - 1);

    for (int i = 0; i < n; i++)
        fout << v[i] << ' ';

    return 0;
}