#include "triInsertion.h"

void triInsertion(long* A, size_t n){
    long cle = 0;
    for(size_t i = 1; i<n; i++){
        cle=A[i];
        size_t j = i - 1;
        while (j+1 > 0 && A[j] > cle ){
            A[j+1] = A[j];
            j = j-1;
        }
        A[j+1] = cle;
    }
}



// --------------------------------------------------------

void triInsertionVerbose(long* A, size_t n, struct data* d){
    long cle = 0; 
    d->write++;
    for(size_t i = 1; i<n; i++){
        cle=A[i];
        d->write++;
        size_t j = i - 1;
        d->write++;
        while (j+1 > 0 && A[j] > cle ){
            d->comparison+=2;
            A[j+1] = A[j];
            d->write++;
            j = j-1;
            d->write++;
        }
        A[j+1] = cle;
        d->write++;
    }
}