Cod sursa(job #2301453)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 12 decembrie 2018 23:36:25
Problema Sortare prin comparare Scor 60
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include<bits/stdc++.h>
using namespace std;

vector <int> v;

int part(int lf, int rg, int pivot){
    swap(v[pivot], v[rg]);
    pivot = rg;
    int i = lf;
    for(int j = lf;j < rg;j++){
        if(v[j] <= v[pivot]){
            swap(v[i], v[j]);
            i++;
        }
    }
    swap(v[i], v[pivot]);
    return i;
}

void q_sort(int lf, int rg){
    if(lf >= rg){
        return;
    }
    int pivot = (lf + rg) / 2;
    int new_pivot = part(lf, rg, pivot);
    q_sort(lf, new_pivot - 1);
    q_sort(new_pivot + 1, rg);
}

int main(){
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    int n;
    scanf("%d",&n);
    for(int i = 0;i < n;i++){
        int x;
        scanf("%d",&x);
        v.emplace_back(x);
    }
    q_sort(0, n - 1);
    cerr << "TYAS";
    for(int i = 0;i < n;i++){
        printf("%d ",v[i]);
    }
    return 0;
}