#include "triRapide.h"

void sousTriRapide(long* A, size_t p, size_t r) {
    size_t max = 0; max--;
    if(r-1 != max){
        if (p<(r-1)) {
            size_t q = partition(A, p, r);
            sousTriRapide(A, p, q);
            sousTriRapide(A, q+1, r);
        }
    }
    
}

size_t partition(long* A, size_t p, size_t r) {
    long pivot = A[r-1];
    
    size_t i = p;
    for (size_t j = p; j <= r-2; j++) {
        if (A[j] <= pivot) {
            long temp = A[i];
            A[i] = A[j];
            A[j] = temp;
            i++;
        }
    }
    long temp = A[i];
    A[i] = A[r-1];
    A[r-1] = temp;
    return i;
}

void triRapide(long* A, size_t n) {
    sousTriRapide(A, 0, n);
}