Cod sursa(job #2646440)

Utilizator laur0700Laurentiu Postole laur0700 Data 1 septembrie 2020 10:46:36
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <bits/stdc++.h>

using namespace std;

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

void interclasare(int v[], int st, int mij, int dr){
    int i,j,k;

    int n1 = mij-st + 1;
    int n2 = dr - mij;

    int L[n1], R[n2];

    for(i=0;i<n1;i++){
        L[i] = v[st+i];
    }
    for(i = 0;i<n2;i++){
        R[i] = v[mij + 1 + i];
    }

    i = j = 0;
    k = st;

    while(i<n1 && j<n2){
        if(L[i]<=R[j]){
            v[k] = L[i];
            i++;
        }
        else{
            v[k] = R[j];
            j++;
        }
        k++;
    }

    while(i<n1)
    {
        v[k] = L[i];
        i++;
        k++;
    }

    while(j<n2){
        v[k] = R[j];
        j++;
        k++;
    }

}

void mergesort(int v[], int st, int dr){
    if(st<dr){
        int mij = (st+dr) / 2;
        mergesort(v, st, mij);
        mergesort(v,mij+1,dr);
        interclasare(v,st,mij,dr);
    }


}

int main()
{
    int n,i,aux,s = 1;

    fin>>n;

    int v[n];

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

    mergesort(v,0,n-1);

    for(i=0;i<n;i++){
        fout<<v[i]<<" ";
    }


    return 0;
}