diff --git a/triInsertion.c b/triInsertion.c new file mode 100644 index 0000000000000000000000000000000000000000..b29d2d2644b88cb0ec437ac0c152f69873869401 --- /dev/null +++ b/triInsertion.c @@ -0,0 +1,38 @@ +#include <stdio.h> +#include <stdlib.h> + +void triInsertion(long* A, size_t n){ + for(size_t i = 1; i < n; i ++){ + long cle = A[i]; + size_t j = i - 1; + while(j + 1 > j && A[j] > cle){ // ici on veut regarder tant que j >= 0 + A[j + 1] = A[j]; + j = j - 1; + } + A[j + 1] = cle; + } +} + +void printTab(long* A,size_t n){ + printf("{"); + for(size_t i = 0;i < n;i++){ + if(i != 0){ + printf(","); + } + printf("%ld",A[i]); + } + printf("}\n"); +} + +int main(int argc, char* argv[]){ + long* A = malloc((argc-1)*sizeof(long)); + for(size_t i = 0;i < argc-1;i++){ + A[i] = atol(argv[i+1]); + } + printf("Tableau d'entrée: "); + printTab(A,argc-1); + triInsertion(A,argc-1); + printf("Tableau de sortie: "); + printTab(A,argc-1); + free(A); +}