Cod sursa(job #864923)

Utilizator timicsIoana Tamas timics Data 25 ianuarie 2013 21:01:51
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.02 kb
#include<fstream>
using namespace std;
int a[400000],b[400000],N;

void merge(int st1, int dr1,int st2, int dr2)
{
    int x=st1;
    int z=st1;
    int y=st2;
    while((x<=dr1)&&(y<=dr2))
    {
        if(a[x]<=a[y])
        {
            b[z]=a[x];
            ++x;
            ++z;
        }
        else
        {
            b[z]=a[y];
            ++y;
            ++z;
        }
    }
    for(int i=x;i<=dr1;++i)
    {
        b[z]=a[i];
        ++z;
    }
    for(int i=y;i<=dr2;++i)
    {
        b[z]=a[i];
        ++z;
    }
    for(int i=st1;i<=dr1;++i) a[i]=b[i];
    for(int i=st2;i<=dr2;++i) a[i]=b[i];
}
void sort(int st, int dr)
{
    if(dr-st==0)
        return;
    int mij=(st+dr)/2;
    sort(st,mij);
    sort(mij+1,dr);
    merge(st,mij,mij+1,dr);
}
int main()
{
    fstream cin("algsort.in");
    fstream cout("algsort.out");
    cin>>N;
    for(int i=1;i<=N;++i)
        cin>>a[i];
    sort(1,N);
    for(int i=1;i<=N;++i)
        cout<<a[i]<<" ";
    return 0;
}