Cod sursa(job #1042547)

Utilizator MoneaVladMonea Vlad MoneaVlad Data 27 noiembrie 2013 11:22:54
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.13 kb
#include <fstream>

using namespace std;

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

int V[500005], P[500005];

void interclasare (int st, int mid, int dr){
    int poz1 = st;
    int poz2 = mid + 1;
    int k = 1;
    while (poz1 <= mid && poz2 <= dr)
        if (V[poz1] <= V[poz2])
        {
            P[k] = V[poz1];
            k++;
            poz1++;
        }
        else
        {
            P[k] = V[poz2];
            k++;
            poz2++;
        }
    while (poz1 <= mid){
        P[k] = V[poz1];
        k++;
        poz1++;
    }
    while (poz2 <= dr){
        P[k] = V[poz2];
        poz2++;
        k++;
    }
    for (int i = st; i <= dr; i++)
            V[i] = P[i - st + 1];

}
void margesort (int st, int dr){
    int mid = st + (dr - st) / 2;
    if (dr > st){
        margesort (st, mid);
        margesort (mid+1, dr);
        interclasare (st, mid, dr);
    }
}

int main()
{
    int n, i;
    in >> n;
    for (i = 1; i <= n; i++)
        in >> V[i];
    margesort (1, n);
    for (i = 1; i <= n; i++)
        out << V[i] << " ";
    return 0;
}