Cod sursa(job #2897334)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 3 mai 2022 14:59:27
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

using namespace std;

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

int n;
int v[500005];

void interclasare(int st, int mid, int dr){
    int i, j, aux[500005], k = 0;
    i = st, j = mid + 1;
    while (i <= mid && j <= dr){
        if (v[i] < v[j]){
            aux[++k] = v[i++];
        }
        else{
            aux[++k] = v[j++];
        }
    }
    for (; i<=mid; i++){
        aux[++k] = v[i];
    }
    for (; j<=dr; j++){
        aux[++k] = v[j];
    }
    for (i=st; i<=dr; i++){
        v[i] = aux[i-st+1];
    }
}

void mergeSort(int st, int dr){
    int mid = (st + dr)/2;
    if (st < dr){
        mergeSort(st, mid);
        mergeSort(mid+1, dr);   
        interclasare(st, mid, dr);
    }
}

int main(){
    fin >> n;
    for (int i=1; i<=n; i++){
        fin >> v[i];
    }
    mergeSort(1, n);
    for (int i=1; i<=n; i++){
        fout << v[i] << ' ';
    }
    return 0;
}