Cod sursa(job #1259243)

Utilizator unudoitreiRusu Alexandru unudoitrei Data 9 noiembrie 2014 21:01:27
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.04 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsot.out");
int a[500001];
void merge(int,int,int);
void merge_sort(int l,int h)
{
    int m;
    if(l<h)
    {
    m=(l+h)/2;
    merge_sort(l,m);
    merge_sort(m+1,h);
    merge(l,m,h);
    }
}
void merge(int l,int m,int h)
{
    int g,i,j,b[50],k;
    g=l;
    i=l;
    j=m+1;
    while((g<=m)&&(j<=h))
    {
    if(a[g]<=a[j])
    {
        b[i]=a[g];
        g++;
    }
    else
    {
        b[i]=a[j];
        j++;
    }
    i++;
    }
    if(g>m)
    {
        for(k=j;k<=h;k++)
        {
            b[i]=a[k];
            i++;
        }
    }
    else
    {
        for(k=g;k<=m;k++)
        {
            b[i]=a[k];
            i++;
        }
    }
    for(k=l;k<=h;k++) a[k]=b[k];
}
int main()
{
    int num,i;
    f>>num;
    for(i=1;i<=num;i++)
    {
        f>>a[i];
    }
    merge_sort(1,num);
    g<<endl;
    for(i=1;i<=num;i++)
        g<<a[i]<<"  ";
    g<<'\n';
    g.close();
    return 0;
}