Cod sursa(job #1019287)

Utilizator CostinVFMI CostinVictorGabriel CostinV Data 30 octombrie 2013 21:29:03
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include<iostream>
#include<fstream>

using namespace std;

void itc(int* a, int p, int m, int r)
{
    int i = p;
    int j = m+1;
    int k = 0, *b;
    b = new int [r-p+1];

    while(i<=m && j<=r)
        if(a[i]<a[j])
            b[k++]=a[i++];
        else
            b[k++]=a[j++];

    while(i<=m)
        b[k++]=a[i++];
    while(j<=r)
        b[k++]=a[j++];

    for(k=0; k<r-p+1; k++)
        a[p+k]=b[k];

    delete b;
}

void sor(int* a, int p, int r)
{
    if(p<r)
    {
        int m = (p + r) / 2;
        sor (a, p, m);
        sor (a, m+1, r);
        itc (a, p, m, r);
    }
}

int main()
{
    int *a, n, i;
    ifstream f("algsort.in");
    f>>n;
    a = new int[n];

    for(i=0; i<n; i++)
        f>>a[i];

    f.close();

    sor(a, 0, n-1);

    ofstream g("algsort.out");
    for(i=0; i<n; i++)
        g<<a[i]<<" ";

    g.close();

    return 0;
}