Cod sursa(job #2221391)

Utilizator claudiu.gatinaFMI Claudiu Gatina claudiu.gatina Data 13 iulie 2018 22:33:27
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <iostream>
#include <cstdio>

using namespace std;

int A[500001];
int aux[500001];

void mergeSort(int left, int right)
{
    if(left == right)
        return;
    int middle = (left + right) / 2;
    mergeSort(left, middle);
    mergeSort(middle + 1, right);
    int i = left, j = middle + 1, k = left;
    while(i <= middle)
    {
        while(j <= right && A[j] < A[i])
        {
            aux[k++] = A[j++];
        }
        aux[k++] = A[i++];
    }
    while(j <= right)
        aux[k++] = A[j++];
    for(int ind = left; ind <= right; ++ind)
    {
        A[ind] = aux[ind];
    }
}

int main()
{
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);

    int n;
    scanf("%d", &n);
    for(int i = 0; i < n; ++i)
        scanf("%d", &A[i]);
    mergeSort(0, n - 1);
    for(int i = 0; i < n; ++i)
        printf("%d ", A[i]);
    return 0;
}