Mai intai trebuie sa te autentifici.

Cod sursa(job #2900746)

Utilizator AlexPascu007Pascu Ionut Alexandru AlexPascu007 Data 12 mai 2022 08:31:45
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>
using namespace std;

// merge sort

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

const int DIM = 500010;

int n, v[DIM], w[DIM];
void sorteaza(int st, int dr), interclaseaza(int st, int mid, int dr);

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


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

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