Cod sursa(job #2142101)

Utilizator jeanFMI - Petcu Ion Cristian jean Data 24 februarie 2018 18:51:41
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<iostream>
#include<cstdlib>
#include<time.h>
#include<algorithm>
#include<vector>
using namespace std;

int partition(vector<int> &A, int start, int end) {
    int p = A[start + rand() % (end - start + 1)];
    int i = start, aux;

    for (int j = start; j <= end; j++) {
        if (A[j] <= p) {
            aux = A[i]; A[i] = A[j]; A[j] = aux;
            i++;
        }
    }

    return i - 1;
}

void quick_sort(vector<int> &A, int start, int end) {
    if (start < end) {
        int p = partition(A, start, end);
        quick_sort(A, start, p - 1);
        quick_sort(A, p + 1, end);
    }
}

int main() {
    freopen("algsort.in", "r", stdin);
    freopen("algsort.out", "w", stdout);
    
    srand(time(0));

    int N;
    cin>>N;

    vector<int> A(N);
    for (int i = 0; i < N; i++) {
        cin >> A[i];
    }

    quick_sort(A, 0, N - 1);

    for (int i = 0; i < N; i++) {
        cout << A[i] << ' ';
    }

    return 0;
}