Skip to content
Snippets Groups Projects
triRapideInsertion.c 953 B
Newer Older
chafiol's avatar
chafiol committed
#include "triRapideInsertion.h"
#include "triInsertion.h"

chafiol's avatar
chafiol committed
void sousTriRapideInsertion(long* A, size_t p, size_t r) {
chafiol's avatar
chafiol committed
    size_t max = 0; max--;
    if(r-1 != max){
        if (p<(r-1)) {
Mickael Da Silva's avatar
Mickael Da Silva committed
            if(r-p<10){
                triInsertion(A, r-p);
            }
            else
            {
                size_t q = partition_wInsertion(A, p, r);
                sousTriRapideInsertion(A, p, q);
                sousTriRapideInsertion(A, q+1, r);
            }
chafiol's avatar
chafiol committed
            
        }
    }
    
}

size_t partition_wInsertion(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 triRapideInsertion(long* A, size_t n) {
chafiol's avatar
chafiol committed
    sousTriRapideInsertion(A, 0, n);
chafiol's avatar
chafiol committed
}