Cod sursa(job #1879885)

Utilizator armand200Armand Cismaru armand200 Data 15 februarie 2017 10:55:30
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;
ifstream f ("algsort.in");
ofstream g ("algsort.out");
int a[500010],b[500010],n;

void interclasare ( int st, int mij ,int dr )
{
    int i,j,k,t;
    for(i=st; i<=dr; i++)
        b[i]=a[i];
    i=st;
    j=mij+1;
    k=st-1;
    while (i<=mij && j<=dr)
        if(b[i]<b[j]) a[++k]=b[i++];
        else
            a[++k]=b[j++];
    for(t=i; t<=mij; t++)
        a[++k]=b[t];
    for(t=j; t<=dr; t++)
        a[++k]=b[t];
}

void sortx ( int st , int dr)
{
    int mij;
    if(st<dr)
    {
        mij=(st+dr)/2;
        sortx (st,mij);
        sortx (mij+1,dr);
        interclasare (st,mij,dr);
    }
}


int main()
{
    int st,dr,i;
    f>>n;
    for(i=1; i<=n; i++)
        f>>a[i];
    st=1;
    dr=n;
    sortx (st,dr);
    for(i=1; i<=n-1; i++)
        g<<a[i]<<" ";
    g<<a[n];

    return 0;
}