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);
+}