Cod sursa(job #1033109)

Utilizator albupetruFMI Albu Petru albupetru Data 16 noiembrie 2013 14:40:08
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <iostream>
#include <fstream>
using namespace std;

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

int v[3000001],i,n;


void mrg(int p, int m, int l)
{
    int a[30000],i;
    int poz1=p;
    int poz2=m+1;
    int k=0;

    while(poz1<=m && poz2<=l)
        if(v[poz1]<v[poz2])
            {
                a[k]=v[poz1];
                k++;
                poz1++;
            }
        else
            {
                a[k]=v[poz2];
                k++;
                poz2++;
            }

    while(poz1<=m)
        {
            a[k]=v[poz1];
            k++;
            poz1++;
        }

    while(poz2<=l)
        {
            a[k]=v[poz2];
            k++;
            poz2++;
        }

    for(i=p; i<=l; i++)
        v[i]=a[i-p];
}

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

int main()
{
    f>>n;

    for(i=0; i<n ;i++)
    {
        f>>v[i];
    }

    mergesort(0,n-1);

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

    return 0;
}