Cod sursa(job #2270865)

Utilizator radugheoRadu Mihai Gheorghe radugheo Data 27 octombrie 2018 17:50:13
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>

using namespace std;

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

int n, i;
int v[500005];

void interclas (int st, int mid, int dr, int v[500005]){
    int i, j, k = 0, aux[500005];
    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 v[]){
    int mid;
    mid = (st + dr)/2;
    if (st < dr){
        mergesort(st, mid, v);
        mergesort(mid+1, dr, v);
        interclas(st, mid, dr, v);
    }
}

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