Cod sursa(job #2310348)

Utilizator Arthur901Flaviu Pop Arthur901 Data 31 decembrie 2018 12:35:44
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include <iostream>
#include <fstream>
using namespace std;
int a[500001];

void Merge(int a[], int inf, int m, int sup)
{
    int i, j, k;
    int n1 = m - inf + 1;
    int n2 =  sup - m;

    int L[n1], R[n2];

     for (i = 1; i <= n1; i++)
        L[i] = a[inf + i -1];

    for (j = 1; j <= n2; j++)
        R[j] = a[m + j];

    i=1;
    j=1;
    k=inf;

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

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

    while (j <= n2)
    {
        a[k] = R[j];
        j++;
        k++;
    }





}

void MergeSort(int a[], int inf, int sup)
{
          int m;
    if(inf < sup)
        {
            m = (inf + sup)/2;
           MergeSort(a, inf, m);
           MergeSort(a, m+1, sup);
           Merge(a, inf, m, sup);
        }


}

int main()
{
    ifstream f("algsort.in");
    ofstream g("algsort.out");
    int n, i;
    f>>n;
    for(i=1; i<=n; i++)
        f>>a[i];

    MergeSort(a, 1, n);
    for(i=1; i<=n; i++)
        g<<a[i]<<" ";
    return 0;
}