Cod sursa(job #2292457)

Utilizator miruna1224Floroiu Miruna miruna1224 Data 29 noiembrie 2018 16:32:50
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <fstream>

using namespace std;

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

void MergeSort (int *v, int st, int dr)
{
    if ( st >= dr)
        return ;
    int m = (st+dr)/2;
    MergeSort( v, st, m);
    MergeSort (v, m+1 , dr);
    interclasare(v, st,m,dr);
}

int main()
{
    int n , i, *v;

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

    in >> n;
    v = new int [n+1];

    for ( i=0 ; i< n ; i++)
        in >> v[i];

    MergeSort(v, 0, n-1 );

    for ( i=0 ; i < n ; i++)
        out << v[i] << " ";

    in.close();
    out.close();

    delete(v);

    return 0;
}