Cod sursa(job #1025450)

Utilizator handz.FMI Andrei Tanasescu handz. Data 9 noiembrie 2013 23:21:50
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.89 kb
#include <iostream>
#include <fstream>
using namespace std;

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

#define maxN 500001
int v[maxN],n;

void merge(int p, int m, int q)
{
    int poz1=p;
    int poz2=m+1;
    int k=0;
    int aux[100],i;

    while(poz1<=m && poz2<=q)
        if(v[poz1]<v[poz2])
            aux[k++]=v[poz1++];
        else
            aux[k++]=v[poz2++];

    while(poz1<=m)
        aux[k++]=v[poz1++];
    while(poz2<=q)
        aux[k++]=v[poz2++];

    for(i=p; i<=q ;i++)
        v[i]=aux[i-p];
}

void MergeSort(int p,int q)
{
    if(q>p)
    {
        int m=(p+q)/2;
        MergeSort(p,m);
        MergeSort(m+1,q);
        merge(p,m,q);
    }
}

int main()
{
    f>>n;
    for(int i=0; i<n ;i++)
    {
        f>>v[i];
    }
    MergeSort(0,n-1);
    for(int i=0; i<n ;i++)
        g<<v[i]<<" ";

    return 0;
}