Cod sursa(job #1794017)

Utilizator NarniussAnghelache Bogdan Narniuss Data 31 octombrie 2016 20:07:45
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
#include <iostream>
#include <fstream>
#define dim2  500001
#define dim 250001
using namespace std;

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

void interclas(int a[], int i, int mij ,int j )
{
    int n1, n2 , x , y , k;
    n1 = mij - i + 1;
    n2 = j - mij ;
    int l[n1+1] , r[n2+1];

    for(x = 1 ; x <= n1 ; x++)
    {
        l[x] = a[i + x - 1];
    }

    for(y = 1 ; y <= n2 ; y++)
    {
        r[y] = a[mij + y];
    }
    k=i;i=1 ; j=1;
    while( i <= n1 && j<= n2)
    {
        if(l[i] <= r[j])
        {
            a[k]=l[i];
            i++;
        }
        else
        {
            a[k]=r[j];
            j++;
        }
        k++;
    }

    while(i <= n1)
    {
        a[k] = l[i];
        k++; i++;
    }

    while(j <= n2)
    {
        a[k] = r[j];
        k++; j++;
    }
}
void merge_sort(int a[], int stg, int dr)
{
    int mij;

    if(stg < dr)
    {
        mij=stg + (dr-stg)/2;
        merge_sort (a, stg, mij );
        merge_sort (a, mij+1, dr);

        interclas (a, stg, mij, dr);
    }

}
int main()
{
    int i, n , a[dim2];
    f>>n;
    for(i=1 ; i <= n ; i++)
    {
        f>>a[i];
    }
    merge_sort(a , 1 , n);

    for(i=1 ; i <= n ; i++)
    {
        g<<a[i]<< " ";
    }
    return 0;
}