Cod sursa(job #3125822)

Utilizator CosminDMRCosmin Damureanu CosminDMR Data 4 mai 2023 16:39:49
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include<fstream>
#define dim 100005
using namespace std;
ifstream in ("algsort.in");
ofstream out("algsort.out");
int n, v[dim], aux[dim];
void interclasare(int st, int mid, int dr)
{
    int k = 0, i = st, j = mid + 1;
    while(i <= mid && j <= dr)
        if (v[i] < v[j])
            aux[++k] = v[i++];
        else
            aux[++k] = v[j++];
    while(i <= mid)
        aux[++k] = v[i++];
    while(j <= dr)
        aux[++k] = v[j++];
    k = 1;
    for (int i = st; i <= dr; i++)
        v[i] = aux[k++];
}
void mergeSort(int st, int dr)
{
    if (st < dr) {
        int mid = (st + dr) / 2;
        mergeSort(st, mid);
        mergeSort(mid+1, dr);
        interclasare(st, mid, dr);
    }
}
int main()
{
    in >> n;
    for (int i = 1; i <= n; i++)
        in >> v[i];
    mergeSort(1, n);
    for (int i = 1; i <= n; i++)
        out << v[i] << " ";
}