Cod sursa(job #1032729)

Utilizator BionicMushroomFMI - Dumitrescu Tiberiu Alexandru BionicMushroom Data 16 noiembrie 2013 00:00:23
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.08 kb
#include<iostream>
#include<fstream>
using namespace std;

int x[500000], n;
ifstream f ("algsort.in");
ofstream g ("algsort.out");

void interclaseaza (int s, int d, int m)
{
    int i = s, j = m + 1, k = 0, v[500000];
    while (i <= m && j <= d)
    {
        if (x[i] < x[j])
        {
            v[k] = x[i];
            i++;
        }
        else
        {
            v[k] = x[j];
            j++;
        }
        k++;
    }
    while (i <= m)
    {
        v[k] = x[i];
        i++;
        k++;
    }
    while (j <= d)
    {
        v[k] = x[j];
        j++;
        k++;
    }
    for (k = 0, i = s; i <= d; k++, i++)
        x[i] = v[k];
}

void MergeSort (int s, int d)
{
    if (s < d)
    {
        int m = (s + d) / 2;
        MergeSort (s, m);
        MergeSort(m + 1, d);
        interclaseaza (s, d, m);
    }
}

int main ()
{
    f >> n;
    for (int i = 0; i < n; i++)
        f >> x[i];
    f.close();
    MergeSort(0, n - 1);
   for (int i = 0; i < n; i++)
        g << x[i] << ' ';
   g.close();
   return 0;
}