Cod sursa(job #2617936)

Utilizator grecub2000Grecu Bogdan grecub2000 Data 23 mai 2020 13:04:50
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.21 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
int V[500005];

void merge(int L, int M, int R)
{
    int n1, n2, i, j, k;

    n1 = M - L + 1;
    n2 = R - M;

    int a[n1], b[n2];

    for(i = 1; i <= n1; i++)
    {
        a[i]=V[L - 1 + i];
    }

    for(j = 1; j <= n2; j++)
    {
        b[j]=V[M+j];
    }

    i = 1; j = 1; k = L;

    while(i <= n1 && j <= n2)
    {
        if(a[i] <= b[j])
        {
            V[k] = a[i];
            i++;
        }
        else
        {
            V[k] = b[j];
            j++;
        }
        k++;
    }

    while(i <= n1)
    {
        V[k] = a[i];
        i++;
        k++;
    }

    while(j <= n2)
    {
        V[k] = b[j];
        j++;
        k++;
    }
}
void merge_sort(int L, int R)
{
    int M;
    if(L < R)
    {
        M = (L + R) / 2;
        merge_sort(L, M);
        merge_sort(M + 1, R);
        merge(L, M, R);
    }
}

int main()
{
    int n, i;
    f >> n;
    for(i = 1; i <= n; i++)
    {
        f >> V[i];
    }
    merge_sort(1, n);
    for(i = 1; i <= n; i++)
        g << V[i] << " ";
    return 0;
}