Cod sursa(job #3133326)

Utilizator mex7Alexandru Valentin mex7 Data 25 mai 2023 14:37:42
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.24 kb
#include <bits/stdc++.h>
#define ll long long
#define cin fin
#define cout fout
using namespace std;

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

int v[100005];

void interclasare(int start1, int end1, int start2, int end2) {
    vector <int> sorted;

    int copy = start1;
    while (start1 <= end1 && start2 <= end2) {
        if (v[start1] <= v[start2]) {
            sorted.push_back(v[start1]);
            ++start1;
        } else {
            sorted.push_back(v[start2]);
            ++start2;
        }
    }

    while (start1 <= end1) {
        sorted.push_back(v[start1]);
        ++start1;
    }

    while (start2 <= end2) {
        sorted.push_back(v[start2]);
        ++start2;
    }

    for (int i : sorted) {
        v[copy] = i;
        ++copy;
    }
}

void sortMerge(int start, int end) {
    if (start >= end)
        return;

    int mijl = (start + end) / 2;

    sortMerge(start, mijl);
    sortMerge(mijl + 1, end);

    interclasare(start, mijl, mijl + 1, end);
}





int main() {
    ios :: sync_with_stdio(0);
    cin.tie(0);

    int n;

    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> v[i];
    }

    sortMerge(0, n - 1);

    for (int i = 0; i < n; ++i) {
        cout << v[i] << ' ';
    }

    return 0;
}