Cod sursa(job #2369519)

Utilizator AdelaCorbeanuAdela Corbeanu AdelaCorbeanu Data 6 martie 2019 00:11:21
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <fstream>
using namespace std;
int n, v[500001];
void interclasare (int st, int m, int dr) {
        int y[500001];
        int k = st-1;
        int i = st, j = m+1;
        while (i<=m && j<=dr) {
            if (v[i]<v[j]) y[++k] = v[i], i++;
            else y[++k] = v[j], j++;
        }
        while (i<=m)
            y[++k] = v[i], i++;
        while (j<=dr)
            y[++k] = v[j], j++;
        for (i=st;i<=dr;i++) v[i] = y[i];
}

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

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