Cod sursa(job #1516355)

Utilizator enouGhAbu Ras Mohamed Ata Radu enouGh Data 2 noiembrie 2015 22:54:57
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#include<iostream>
#include<fstream>
#include<stdio.h>
using namespace std;
int pr,ul , n,p;
int v[500001];
int a[500001];
void interclasare(int pr, int m, int ul)
{

    int x = pr;
    int k = 0;
    int y = m + 1;
    while((x<=m)&&(y<=ul))
        if (v[x] < v[y])
        {

            a[++k] = v[x];
            x++;

        }
        else
        {

            a[++k] = v[y];
            y++;



        }
    if (y > ul)
        for (p = x; p <= m; p++)
        {
            a[++k] = v[p];



        }
    if (x > m)
        for (p = y; p <= ul; p++)
        {
            a[++k] = v[p];


        }
    for (p = 1; p <= k; p++)
        v[pr+p-1] = a[p];
}
void divide(int pr, int ul)
{
    if (pr < ul) {
        int m = (pr + ul) / 2;
        divide(pr, m);
        divide(m + 1, ul);
        interclasare(pr, m, ul);
                }


}


int main() {

    ifstream f("algsort.in");
    ofstream g("algsort.out");
    f >> n;
    for (pr = 1; pr <= n; pr++)
        f >> v[pr];




    divide(1, n);



    for (pr = 1; pr <= n; pr++)
        g << v[pr]<<' ';


    return 0;
}