Cod sursa(job #1732192)

Utilizator XeBluePodaru Mihai XeBlue Data 21 iulie 2016 01:41:03
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.95 kb
#include <fstream>

using namespace std;

ifstream in("algsort.in");
ofstream out("algsort.out");

int v[500000], n, t[500000];

void mergeS(int st, int dr)
{
    int i = st, k = st, m=(st+dr)/2, j= m+1;
    for(int f = st; f <= dr; f++)
        t[f] = v[f];

    while(i <= m && j <= dr)
    {
        if(t[i] > t[j])
        {
            v[k] = t[j];
            j++;
        }
        else
        {
            v[k] = t[i];
            i++;
        }
        k++;
    }

    while(i <= m )
        v[k++] = t[i++];

    while(j <= dr )
        v[k++] = t[j++];

}

void mergeSort(int st, int dr)
{
    if(st < dr)
    {
        int m =(st+dr)/2;
        mergeSort(st, m);
        mergeSort(m+1, dr);
        mergeS(st,dr);
    }
}

int main()
{
    in >> n;

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

    mergeSort(0,n-1);

    for(int i=0;i<n;i++)
        out <<  v[i] << " ";


    return 0;
}