Cod sursa(job #2237983)

Utilizator andradacojocaruAndrada Cojocaru andradacojocaru Data 4 septembrie 2018 08:23:11
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include <iostream>
#include <fstream>
using namespace std;

int v[500001];
int aux[500001];
ifstream fin("algsort.in");
ofstream fout("algsort.out");
void interclasare(int n, int m, int i1, int i2 ){
    int i = i1, j = i2, k = i1;
    while(i <= n && j <= m){
        if(v[i] <= v[j]) aux[k++] = v[i++];
        else aux[k++] = v[j++];
    }
    while(i <= n) aux[k++] = v[i++];
    while(j <= m) aux[k++] = v[j++];
    for(int i = i1; i <=  m; ++i) v[i] = aux[i];
}
void quicksortt(int st, int dr){
    int mij = (st + dr) / 2;
    if(dr - st <= 0) return ;
    quicksortt(st, mij);
    quicksortt(mij + 1, dr);
    interclasare(mij, dr, st, mij + 1);
}
int main() {
    int n;
    fin >> n;
    for(int i = 1; i <= n; ++i){
        fin >> v[i];
    }
    quicksortt(1, n);
    for(int i = 1; i <= n; ++i) fout << v[i] << " " ;
    return 0;
}