Cod sursa(job #2900141)

Utilizator StanCatalinStanCatalin StanCatalin Data 10 mai 2022 14:18:13
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.12 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

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

vector<int> vec;
int n;

void MergeSort(vector<int> &vec) {
    if (vec.size() <= 1) return;
    vector<int> vec1, vec2;
    for (int i=0; i<vec.size()/2; i++) {
        vec1.push_back(vec[i]);
    }
    for (int i=vec.size()/2; i<vec.size(); i++) {
        vec2.push_back(vec[i]);
    }
    MergeSort(vec1);
    MergeSort(vec2);
    int i = 0;
    int j = 0;
    vector<int> newvec;
    while (i < vec1.size() && j < vec2.size()) {
        if (vec1[i] <= vec2[j]) {
            newvec.push_back(vec1[i++]);
        } else {
            newvec.push_back(vec2[j++]);
        }
    }
    while (i < vec1.size()) {
        newvec.push_back(vec1[i++]);
    }
    while (j < vec2.size()) {
        newvec.push_back(vec2[j++]);
    }
    vec = newvec;
}

int main()
{
    int a;
    in >> n;
    for (int i=0; i<n; i++) {
        in >> a;
        vec.push_back(a);
    }
    MergeSort(vec);
    for (auto &y:vec) {
        out << y << " ";
    }
    return 0;
}