Cod sursa(job #2065553)

Utilizator nic_irinaChitu Irina nic_irina Data 13 noiembrie 2017 21:20:24
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

int v[500001];

void interclasare ( int st, int m, int dr )
{
    int i, j, k=0, aux[500001];
    i = st;
    j = m + 1;
    while ( ( i <= m ) && ( j <= dr ) )
        if( v[i] <= v[j] )
        {
            k++;
            aux[k] = v[i];
            i++;
        }
        else
            aux[++k] = v[j++];
    while ( i <= m )
        aux[++k] = v[i++];
    while ( j <= dr )
        aux[++k] = v[j++];
    for ( i = 1; i <= k; i++ )
        v[st+i-1] = aux[i];
}

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

int main()
{
    int n, i;

    fin >> n;
    for( i = 1; i <= n; i++ )
        fin >> v[i];
    MergeSort( 1, n);
    for( i = 1; i <= n; i++ )
        fout << v[i] << " ";
    return 0;
}