Cod sursa(job #1732854)

Utilizator qxZapMilea Mihai qxZap Data 22 iulie 2016 18:40:31
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.09 kb
#include <fstream>
#define Nmax 1005
using namespace std;

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

int a[Nmax], b[Nmax];

void merge(int l, int r)
{
    if (r>l)
    {
        merge(l, (l+r)/2);
        merge((r+l)/2+1,r);

        int p=l,q=(l+r)/2+1, z=l;
        while (p<=(l+r)/2 && q<=r)
        {
            if(a[p]<a[q])
                {
                    b[z]=a[p];
                    z++;
                    p++;

                }
            else
                {
                    b[z]=a[q];
                    z++;
                    q++;
                }
        }
        while(p<=(l+r)/2)
            {
                b[z]=a[p];
                z++;
                p++;
            }

        while(q<=r)
            {
                b[z]=a[q];
                z++;
                q++;
            }


        for(int i=l; i<=r; i++)
            a[i]=b[i];
    }
}
int n;

int main()
{
    f>>n;
    for(int i=1; i<=n; i++)
        f>>a[i];

    merge(1,n);

    for(int i=1; i<=n; i++)
        g<<a[i]<<" ";
}