diff --git a/Algos_1/main.c b/Algos_1/main.c
index c53b2293a0e0db148af8e6ee2c8de3e209d8cd62..b4d743eec34ddaa5fca979b4949f2eb7fb52e502 100644
--- a/Algos_1/main.c
+++ b/Algos_1/main.c
@@ -1,4 +1,7 @@
-#include "algos.h"
+#include "triInsertion.h"
+#include "triFusion.h"
+#include "triRapide.h"
+
 
 int readToTab(long* tab, char* file){
     int n = 0;
@@ -55,7 +58,7 @@ int main(int argc, char **argv){
     }
     else if(strcmp(argv[1], "--fusion")== 0 || strcmp(argv[1], "-f")== 0){
         triFusion(tab, n);
-        printf("Fusion : ");
+        printf("Fusion    : ");
         for(int i  = 0; i<n; i++){
             printf("%ld,", tab[i]);
         }
diff --git a/Algos_1/makefile b/Algos_1/makefile
index 09e964d3506be09330036bbbeebdd2c8de9f57c3..6a8fd56396c42df8c68c6c65c546ed2837cda787 100644
--- a/Algos_1/makefile
+++ b/Algos_1/makefile
@@ -1,10 +1,16 @@
 all: tri
 
-tri: main.c algos.o
-	gcc -Wall main.c algos.o -Wall -o tri
+tri: main.c triInsertion.o triFusion.o triRapide.o
+	gcc -Wall main.c triInsertion.o triFusion.o triRapide.o -Wall -o tri
 
-algos: algos.c algos.h
-	gcc -c algos.c algos.h -Wall
+insertion: triInsertion.c triInsertion.h
+	gcc -c triInsertion.c triInsertion.h -Wall
+
+fusion: triFusion.c triFusion.h
+	gcc -c triFusion.c triFusion.h -Wall
+
+rapide: triRapide.c triRapide.h
+	gcc -c triRapide.c triRapide.h -Wall
 
 clear:
 	rm *.o
\ No newline at end of file
diff --git a/Algos_1/tri b/Algos_1/tri
index 06ac4737766b668fbae91ed02026a9ff1e287e3a..b1c3b93122fbcac33f253945a94a3c5ed4910bf4 100755
Binary files a/Algos_1/tri and b/Algos_1/tri differ
diff --git a/Algos_1/triFusion.c b/Algos_1/triFusion.c
new file mode 100644
index 0000000000000000000000000000000000000000..adf7a76be6e49da23e956af9b6054bc58fc73f3d
--- /dev/null
+++ b/Algos_1/triFusion.c
@@ -0,0 +1,58 @@
+#include "triFusion.h"
+
+void sousTriFusion(long * A, size_t p, size_t r){
+    if(p<(r-1)){
+        size_t q = (size_t)((p+r)/2);
+        sousTriFusion(A, p, q);
+        sousTriFusion(A, q, r);
+        fusion(A, p, q, r);
+    }
+}
+
+void fusion(long * A, size_t p, size_t q, size_t r){
+    size_t n1 = q-p;
+    size_t n2 = r-q;
+
+    long Ad[n2];
+    memset(Ad, 0, n2);
+    int j =0;
+    for(size_t i = q; i<r; i++){
+        Ad[j] = A[i];
+        j++;
+    }
+
+    long Ag[n1];
+    memset(Ag, 0, n1);
+    j =0;
+    for(size_t i = p; i<q; i++){
+        Ag[j] = A[i];
+        j++;
+    }
+
+    size_t indg = 0;
+    size_t indd = 0;
+    size_t i = p;
+    while (i < r){
+        if(indg == n1){
+            A[i] = Ad[indd];
+            indd++;
+        }
+        else if(indd == n2){
+            A[i] == Ag[indg];
+            indg++;
+        }
+        else if(Ag[indg] < Ad[indd]){
+            A[i] = Ag[indg];
+            indg++;
+        }
+        else{
+            A[i] = Ad[indd];
+            indd++;
+        }
+        i++;
+    }
+}
+
+void triFusion(long * A, size_t n){
+    sousTriFusion(A, 0, n);
+}
\ No newline at end of file
diff --git a/Algos_1/triFusion.h b/Algos_1/triFusion.h
new file mode 100644
index 0000000000000000000000000000000000000000..1819fb9ba7712e2e213ace245d6910fc9e744c0c
--- /dev/null
+++ b/Algos_1/triFusion.h
@@ -0,0 +1,13 @@
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+
+void sousTriFusion(long * A, size_t p, size_t r);
+void fusion(long * A, size_t p, size_t q, size_t r);
+void triFusion(long * A, size_t n);
\ No newline at end of file
diff --git a/Algos_1/triFusion.o b/Algos_1/triFusion.o
new file mode 100644
index 0000000000000000000000000000000000000000..d2778748c6c8f8f547f38c666347bff1372fadec
Binary files /dev/null and b/Algos_1/triFusion.o differ
diff --git a/Algos_1/triInsertion.c b/Algos_1/triInsertion.c
new file mode 100644
index 0000000000000000000000000000000000000000..e3dbfe0a5683fb84163aa95dd13c94e26948accb
--- /dev/null
+++ b/Algos_1/triInsertion.c
@@ -0,0 +1,15 @@
+#include "triInsertion.h"
+
+void triInsertion(long* A, size_t n){
+    long cle = 0;
+    size_t max = 0; max--;
+    for(size_t i = 1; i<n; i++){
+        cle=A[i];
+        size_t j = i - 1;
+        while (j != max && A[j] > cle ){
+            A[j+1] = A[j];
+            j = j-1;
+        }
+        A[j+1] = cle;
+    }
+}
diff --git a/Algos_1/triInsertion.h b/Algos_1/triInsertion.h
new file mode 100644
index 0000000000000000000000000000000000000000..099ddb61356568f4efd6cd53cfea7c9d69ee8223
--- /dev/null
+++ b/Algos_1/triInsertion.h
@@ -0,0 +1,11 @@
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+
+void triInsertion(long* A, size_t n);
\ No newline at end of file
diff --git a/Algos_1/triInsertion.o b/Algos_1/triInsertion.o
new file mode 100644
index 0000000000000000000000000000000000000000..1b156751a9a90658525041818d230a8223c9b9da
Binary files /dev/null and b/Algos_1/triInsertion.o differ
diff --git a/Algos_1/triRapide.c b/Algos_1/triRapide.c
new file mode 100644
index 0000000000000000000000000000000000000000..042a1ffab1bf8ff49b7400623ce6698134f88fe0
--- /dev/null
+++ b/Algos_1/triRapide.c
@@ -0,0 +1,35 @@
+#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);
+}
\ No newline at end of file
diff --git a/Algos_1/triRapide.h b/Algos_1/triRapide.h
new file mode 100644
index 0000000000000000000000000000000000000000..2a026374e00bc5b08aecc57c92f720d353aea207
--- /dev/null
+++ b/Algos_1/triRapide.h
@@ -0,0 +1,13 @@
+#include <stddef.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <string.h>
+
+void triRapide(long* A, size_t n);
+size_t partition(long* A, size_t p, size_t r);
+void sousTriRapide(long* A, size_t p, size_t r);
diff --git a/Algos_1/triRapide.o b/Algos_1/triRapide.o
new file mode 100644
index 0000000000000000000000000000000000000000..09f591cbee4555c870f5755ae5daa210d48b3394
Binary files /dev/null and b/Algos_1/triRapide.o differ