Cod sursa(job #2620186)

Utilizator ioanapintilie07Pintilie Ioana ioanapintilie07 Data 28 mai 2020 16:10:23
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;


int w[5000001];
void interclasare(int v[], int st, int dr) {
    int m, i, j, k;
    m = (st + dr) / 2;
    k = 0;
    i = st;
    j = m + 1;
    while (i <= m && j <= dr) {
        if (v[i] < v[j]) w[++k] = v[i++];
        else w[++k] = v[j++];
    }
    while (i <= m) w[++k] = v[i++];
    while (j <= dr) w[++k] = v[j++];
    for (i = st, j = 1; i <= dr; i++, j++) v[i] = w[j];
}


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

int main() {
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    int n, v[500001], i;
    fin >> n;
    for(i = 1; i <= n; ++i)
        fin >> v[i];
    mergeSort(v, 1, n);
    for(i = 1; i <= n; ++i)
        fout << v[i] << " ";
    return 0;
}