Cod sursa(job #2898343)

Utilizator crivoicarlaCrivoi Carla crivoicarla Data 6 mai 2022 16:45:22
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");

void MergeSortIntermediar(vector<int> &v,int r,int mid,int  l){
    int temp[l - r + 1];
    int i = r, j = mid+1, k = 0;

    while(i <= mid && j <= l) {
        if(v[i] <= v[j]) {
            temp[k] = v[i];
            k += 1; i += 1;
        }
        else {
            temp[k] = v[j];
            k += 1; j += 1;
        }
    }
    while(i <= mid) {
        temp[k] =v[i];
        k += 1; i += 1;
    }
    while(j <= l) {
        temp[k] = v[j];
        k += 1; j += 1;
    }

    for(i = r; i <= l; i += 1) {
        v[i] = temp[i - r];
    }


}
void MergeSort(vector<int> &v, int r, int l){
    if(r < l) {
        int mid = (r+l) / 2;
        MergeSort(v, r, mid);
        MergeSort(v, mid+1, l);
        MergeSortIntermediar(v, r, mid,l);
    }


}
int main() {
    int n;
   vector<int> v;
    fin>>n;
    for(int i=0;i<n;i++)
    {
        int a;
        fin>>a;
        v.push_back(a);

    }
    MergeSort(v,0,v.size()-1);
    for(auto i: v){
        fout<<i<<' ';
    }
    return 0;
}