Cod sursa(job #467950)

Utilizator mihai0110Bivol Mihai mihai0110 Data 1 iulie 2010 14:49:05
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.82 kb
//mergesort ca pt bac

#include<fstream.h>
ifstream f("algsort.in");
ofstream g("algsort.out");

int n,i;
int a[500001],b[500001];

void sort(int li,int ls)
{
    int m=(li+ls)/2;
    int i,j,k;
    if(li<ls)
    {
        sort(li,m);
        sort(m+1,ls);
    }
    if(ls - li > 0)
    {
        i=li;j=m+1;k=1;
        while(i<=m && j<=ls)
        {
            if(a[i] < a[j])
                b[k++] = a[i++];
            else
                b[k++] = a[j++];
        }
        for(;i<=m;i++)
            b[k++]=a[i];
        for(;j<=ls;j++)
            b[k++]=a[j];
        k=1;
        for(i=li;i<=ls;i++)
            a[i] = b[k++];
    }
}


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