Cod sursa(job #2847671)

Utilizator AndreiBadAndrei Badulescu AndreiBad Data 11 februarie 2022 11:09:33
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
//
//  main.cpp
//  Sortare prin comparare (infoarena)
//
//  Created by Andrei Bădulescu on 11.02.22.
//

#include <iostream>
#include <fstream>

using namespace std;

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

int v[500000];

void quick(int st, int dr) {
    if (st < dr) {
        int pivot = v[(st + dr) / 2];
        int i = st, j = dr;
        
        do {
            while (i < dr && v[i] < pivot) {
                i++;
            }
            
            while(j > st && v[j] > pivot) {
                j--;
            }
            
            if (i <= j) {
                swap(v[i], v[j]);
                i++;
                j--;
            }
        } while (i <= j);
        
        if (st < j) {
            quick(st, j);
        }
        
        quick(i, dr);
    }
}

int main() {
    int n;
    in >> n;
    
    for (int i = 0; i < n; i++) {
        in >> v[i];
    }
    
    quick(0, n - 1);
    
    for (int i = 0; i < n; i++) {
        out << v[i] << ' ';
    }
    
    return 0;
}