Cod sursa(job #2897337)

Utilizator woodyinhoStoica Elias-Valeriu woodyinho Data 3 mai 2022 15:01:23
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.18 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int v[500001];
int n;
void merge(int v[], int stg, int mij, int drp){
    int lstg = mij - stg + 1;
    int ldrp = drp - mij;
    int L[lstg], R[ldrp];
    for(int i = 0; i < lstg; i++){
        L[i] = v[stg + i];
    }
    for(int j = 0; j < ldrp; j++){
        R[j] = v[mij + 1 + j];
    }
    //facem interclasarea celor 2 vectori
    int i = 0, j = 0, stg1 = stg;
    while(i<lstg and j<ldrp){
        if(L[i] <= R[j]){
            v[stg1] = L[i];
            i++;

        }
        else{
            v[stg1] = R[j];
            j++;
        }
        stg1++;
    }
    while(i<lstg){
        v[stg1]=L[i];
        stg1++;
        i++;
    }
    while(j<ldrp){
        v[stg1]=R[j];
        stg1++;
        j++;
    }
}
void mergesort(int v[], int stg, int drp){
    if(stg>=drp)
        return ;
    int mij = (stg + drp - 1) / 2;
    mergesort(v, stg, mij);
    mergesort(v, mij + 1, drp);
    merge(v, stg, mij, drp);
}
int main() {
    f>>n;
    for(int i = 0;i < n;i++)
        f>>v[i];
    mergesort(v, 0, n - 1);
    for(int i = 0;i < n;i++)
        g<<v[i]<<" ";
    return 0;
}