Cod sursa(job #3261440)

Utilizator Onofrei_GeorgeOnofrei G Onofrei_George Data 5 decembrie 2024 21:04:12
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.95 kb
#include <bits/stdc++.h>
using namespace std;

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

int a[500005], b[500005], n;

void Intercalasare(int st, int mij, int dr)
{
    int i, j, k;
    i = st; j = mij + 1; k = st;
    while(i <= mij && j <= dr)
    {
        if(a[i] < a[j]) b[k++] = a[i++];
        else b[k++] = a[j++];
    }
    while(i <= mij)
        b[k++] = a[i++];
    while(j <= dr)
        b[k++] = a[j++];
    for(i = st; i <= dr; i++)
        a[i] = b[i];
}

void MergeSort(int st, int dr)
{
    if(st < dr)
    {
        int mij = (st + dr) / 2;
        MergeSort(st, mij);
        MergeSort(mij + 1, dr);
        Intercalasare(st, mij, dr);
    }
}

void Citire()
{
    cin >>n;
    for(int i = 1; i <= n; i++)
        cin >> a[i];
}

void Afis()
{
    for(int i = 1; i <= n; i++)
        cout << a[i] << " ";
}

int main()
{
    Citire();
    MergeSort(1, n);
    Afis();
    return 0;
}