Cod sursa(job #1313824)

Utilizator UgleaEduFMI - Edward UgleaEdu Data 11 ianuarie 2015 10:38:17
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <fstream>

using namespace std;
int v[ 500000 ];

void merge( int st, int mij, int dr )
{

    int i = st, j = mij + 1, c[ 500000 ], k = 0;

    while ( i <= mij && j <= dr )

        if( v[ i ] < v[ j ] )

            c[ k++ ] = v[ i++ ];
        else

            c[ k++ ] = v[ j++ ];

    while ( i <= mij )

        c[ k++ ] = v[ i++ ];

    while ( j <= dr )

        c[ k++ ] = v[ j++ ];

    k = 0;

    for ( i = st; i <= dr; i++ )

        v[ i ] = c[ k++ ];

}


void sort ( int st, int dr )
{
    int mij = ( dr - st )/2 + st;

    if ( st < dr )
    {
        sort( st, mij );
        sort( mij + 1, dr );
        merge( st, mij, dr );
    }
}


int main()
{

    ifstream f("algsort.in");
    int n, i;
    f >> n;

    for ( i = 0; i < n; i++ )

        f >> v[ i ];

    sort( 0, n-1 );

    ofstream g("algsort.out");

    for ( i = 0; i < n; i++ )

        g << v[ i ] << " ";

    f.close();
    g.close();
    return 0;
}