Cod sursa(job #1021410)

Utilizator CatalinaRaduCatalina Elena Radu CatalinaRadu Data 3 noiembrie 2013 19:49:25
Problema Sortare prin comparare Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.14 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
int a[500001];
long n;

void merge1(long, long, long);

void mergesort(long low, long high)
{
    long mid;
    if (low<high)
    {
        mid=(low+high)/2;
        mergesort(low,mid);
        mergesort(mid+1,high);
        merge1 (low, mid, high);
    }

}

void merge1(long low, long mid, long high)
{
    long h,i,j,k,b[50];
    h=low;
    i=low;
    j=mid+1;
    while (h<=mid && j<=high)
    {
       if (a[j]>=a[h])
       {
        b[i]=a[h];h++;
       }
       else
       {
           b[i]=a[j];j++;

       }
       i++;
    }
    if (h>mid)

        for (k=j;k<=high;k++)
        {
            b[i]=a[k];
            i++;
        }
        else
        for (k=h;k<=mid;k++)
        {
            b[i]=a[k];
            i++;
        }
    for (k=low;k<=high;k++)
        a[k]=b[k];

}


int main()
{
    long i;
    f>>n;
    for (i=1;i<=n;i++)
       f>>a[i];
    mergesort(1,n);
    for (i=1;i<=n;i++)
        g<<a[i]<<" ";
    f.close();g.close();
    return 0;
}