diff --git a/TP2/Rplots.pdf b/TP2/Rplots.pdf
index d890bdf267629e37a162fcce705f5c56e4bc8db9..efb26aa0cc6204a3ae96f8680c14c62026cddf4d 100644
Binary files a/TP2/Rplots.pdf and b/TP2/Rplots.pdf differ
diff --git a/TP2/fusion.dat b/TP2/fusion.dat
deleted file mode 100755
index d72f00ff1d19c5b3b1ce201f313fea89385b35a2..0000000000000000000000000000000000000000
--- a/TP2/fusion.dat
+++ /dev/null
@@ -1,61 +0,0 @@
-iTest	taille	temps	mem	algo	typeTableau
-1	50000	1.86	1344	i	a
-1	70000	3.56	1652	i	a
-1	90000	5.88	1892	i	a
-1	50000	2.34	1396	i	m
-1	70000	4.52	1728	i	m
-1	90000	7.58	1876	i	m
-2	50000	1.85	1388	i	a
-2	70000	3.54	1644	i	a
-2	90000	5.87	1660	i	a
-2	50000	2.30	1392	i	m
-2	70000	4.50	1736	i	m
-2	90000	7.42	1612	i	m
-3	50000	1.84	1388	i	a
-3	70000	3.54	1572	i	a
-3	90000	5.88	1884	i	a
-3	50000	2.35	1388	i	m
-3	70000	4.49	1744	i	m
-3	90000	7.43	1892	i	m
-4	50000	1.81	1288	i	a
-4	70000	3.53	1660	i	a
-4	90000	5.86	1612	i	a
-4	50000	2.30	1336	i	m
-4	70000	4.50	1656	i	m
-4	90000	7.42	1576	i	m
-5	50000	1.81	1352	i	a
-5	70000	3.54	1652	i	a
-5	90000	5.87	1552	i	a
-5	50000	2.30	1388	i	m
-5	70000	4.48	1664	i	m
-5	90000	7.43	1840	i	m
-6	50000	1.83	1400	i	a
-6	70000	3.54	1608	i	a
-6	90000	5.86	1664	i	a
-6	50000	2.30	1564	i	m
-6	70000	4.50	1552	i	m
-6	90000	7.43	1608	i	m
-7	50000	1.81	1396	i	a
-7	70000	3.54	1664	i	a
-7	90000	5.86	1616	i	a
-7	50000	2.27	1356	i	m
-7	70000	4.48	1664	i	m
-7	90000	7.43	1892	i	m
-8	50000	1.81	1288	i	a
-8	70000	3.54	1580	i	a
-8	90000	5.85	1644	i	a
-8	50000	2.29	1292	i	m
-8	70000	4.49	1612	i	m
-8	90000	7.40	1616	i	m
-9	50000	1.81	1464	i	a
-9	70000	3.58	1728	i	a
-9	90000	5.87	1616	i	a
-9	50000	2.29	1344	i	m
-9	70000	4.50	1652	i	m
-9	90000	7.43	1776	i	m
-10	50000	1.81	1336	i	a
-10	70000	3.55	1552	i	a
-10	90000	5.85	1964	i	a
-10	50000	2.33	1388	i	m
-10	70000	4.49	1608	i	m
-10	90000	7.42	1600	i	m
diff --git a/TP2/ggossaprodansR.png b/TP2/ggossaprodansR.png
deleted file mode 100644
index 90103439e1c741904d603f17a0f2e33373416a53..0000000000000000000000000000000000000000
Binary files a/TP2/ggossaprodansR.png and /dev/null differ
diff --git a/TP2/graphe.png b/TP2/graphe.png
deleted file mode 100644
index b3aa9edf01a7f0552332693a41556aaed96c3b91..0000000000000000000000000000000000000000
Binary files a/TP2/graphe.png and /dev/null differ
diff --git a/TP2/grapheFusion.png b/TP2/grapheFusion.png
deleted file mode 100644
index 1a1f97ec06723420b6df651ed86c82494f7bb844..0000000000000000000000000000000000000000
Binary files a/TP2/grapheFusion.png and /dev/null differ
diff --git a/TP2/main.c b/TP2/main.c
index 5b3eb6c30a417d881ade9843c4355104a1973aec..5338f01ae7eca15447f47f393ded4cece5c04acf 100644
--- a/TP2/main.c
+++ b/TP2/main.c
@@ -7,8 +7,8 @@
 #include "utils.h"
 
 int main(int argc, char *argv[]) {
-  if(argc != 5) {
-    printf("Usage: %s [typeAlgo] [taille] [typeTableau] [isAfficher]\n", argv[0]);
+  if(argc != 6) {
+    printf("Usage: %s [typeAlgo] [taille] [typeTableau] [isAfficher] [versionRap]\n", argv[0]);
     exit(1);
   }
 
@@ -18,6 +18,7 @@ int main(int argc, char *argv[]) {
   long *tab = malloc(sizeof(long) * taille);
   char typeTable = argv[3][0];
   size_t afficher = (size_t) atoi(argv[4]);
+  int versionRap = (size_t) atoi(argv[5]);
 
   genTab(tab, taille, typeTable, MAX);
 
@@ -33,7 +34,7 @@ int main(int argc, char *argv[]) {
       break;
 
     case 'r':
-      triRapide(tab, taille);
+      triRapide(tab, taille, versionRap);
 
       if(afficher) {
         printf("Tri Rapide: \n");
diff --git a/TP2/test.R b/TP2/test.R
deleted file mode 100644
index 9d98a9dc31ba5217346a74bf9244d1667de9feb3..0000000000000000000000000000000000000000
--- a/TP2/test.R
+++ /dev/null
@@ -1,7 +0,0 @@
-library(ggplot2)
-perf <- read.table("test.dat", header = TRUE)
-ggplot(perf, aes(x=taille, y=temps, group=algo, colour=as.character(algo))) + facet_grid(algo ~ typeTableau) +
-geom_point() + geom_smooth() +
- ggtitle("Graphes Comparaison Algos")
-
-ggsave("graphe.png")
diff --git a/TP2/test.dat b/TP2/test.dat
deleted file mode 100644
index 682bb4ed2f134d73aab052214c15504b2d4eb4bd..0000000000000000000000000000000000000000
--- a/TP2/test.dat
+++ /dev/null
@@ -1,121 +0,0 @@
--e iTest	taille	temps	mem	algo	typeTableau
--e 1	59296	2.17	1772	i	a
--e 1	59296	0.00	1704	i	r
--e 1	59296	4.47	1656	i	i
--e 1	59296	0.00	1700	i	c
--e 1	59296	0.23	1848	r	a
--e 1	59296	11.35	5416	r	r
--e 1	59296	7.77	5412	r	i
--e 1	59296	11.25	5412	r	c
--e 1	59296	0.01	1992	f	a
--e 1	59296	0.01	1964	f	r
--e 1	59296	0.00	2032	f	i
--e 1	59296	0.00	1956	f	c
--e 2	97794	6.03	1988	i	a
--e 2	97794	0.00	1988	i	r
--e 2	97794	12.13	1928	i	i
--e 2	97794	0.00	2012	i	c
--e 2	97794	0.61	2116	r	a
--e 2	97794	30.32	8036	r	r
--e 2	97794	20.98	8116	r	i
--e 2	97794	30.33	8100	r	c
--e 2	97794	0.01	2604	f	a
--e 2	97794	0.01	2544	f	r
--e 2	97794	0.01	2680	f	i
--e 2	97794	0.01	2556	f	c
--e 3	41540	1.08	1496	i	a
--e 3	41540	0.00	1576	i	r
--e 3	41540	2.17	1456	i	i
--e 3	41540	0.00	1628	i	c
--e 3	41540	0.11	1628	r	a
--e 3	41540	5.49	4080	r	r
--e 3	41540	3.82	4152	r	i
--e 3	41540	5.39	4224	r	c
--e 3	41540	0.00	1908	f	a
--e 3	41540	0.00	1892	f	r
--e 3	41540	0.00	1836	f	i
--e 3	41540	0.00	1972	f	c
--e 4	97964	5.95	1936	i	a
--e 4	97964	0.00	2040	i	r
--e 4	97964	12.07	1992	i	i
--e 4	97964	0.00	2048	i	c
--e 4	97964	0.62	2124	r	a
--e 4	97964	32.03	8192	r	r
--e 4	97964	21.83	8080	r	i
--e 4	97964	30.63	8024	r	c
--e 4	97964	0.02	2560	f	a
--e 4	97964	0.01	2564	f	r
--e 4	97964	0.01	2544	f	i
--e 4	97964	0.01	2492	f	c
--e 5	39669	1.00	1544	i	a
--e 5	39669	0.00	1496	i	r
--e 5	39669	2.03	1504	i	i
--e 5	39669	0.00	1536	i	c
--e 5	39669	0.10	1552	r	a
--e 5	39669	5.03	4032	r	r
--e 5	39669	3.44	3984	r	i
--e 5	39669	5.00	4024	r	c
--e 5	39669	0.00	1792	f	a
--e 5	39669	0.00	1820	f	r
--e 5	39669	0.00	1840	f	i
--e 5	39669	0.00	1884	f	c
--e 6	8038	0.04	1300	i	a
--e 6	8038	0.00	1300	i	r
--e 6	8038	0.08	1220	i	i
--e 6	8038	0.00	1288	i	c
--e 6	8038	0.00	1300	r	a
--e 6	8038	0.20	1756	r	r
--e 6	8038	0.14	1812	r	i
--e 6	8038	0.21	1808	r	c
--e 6	8038	0.00	1448	f	a
--e 6	8038	0.00	1448	f	r
--e 6	8038	0.00	1332	f	i
--e 6	8038	0.00	1364	f	c
--e 7	30705	0.59	1468	i	a
--e 7	30705	0.00	1524	i	r
--e 7	30705	1.19	1480	i	i
--e 7	30705	0.00	1492	i	c
--e 7	30705	0.06	1472	r	a
--e 7	30705	3.02	3440	r	r
--e 7	30705	2.08	3408	r	i
--e 7	30705	3.00	3384	r	c
--e 7	30705	0.00	1688	f	a
--e 7	30705	0.00	1688	f	r
--e 7	30705	0.00	1616	f	i
--e 7	30705	0.00	1696	f	c
--e 8	53435	1.81	1660	i	a
--e 8	53435	0.00	1700	i	r
--e 8	53435	3.66	1656	i	i
--e 8	53435	0.00	1640	i	c
--e 8	53435	0.18	1676	r	a
--e 8	53435	9.15	4892	r	r
--e 8	53435	6.50	5000	r	i
--e 8	53435	9.16	4928	r	c
--e 8	53435	0.01	1996	f	a
--e 8	53435	0.00	1904	f	r
--e 8	53435	0.00	1988	f	i
--e 8	53435	0.00	1992	f	c
--e 9	50961	1.61	1676	i	a
--e 9	50961	0.00	1640	i	r
--e 9	50961	3.30	1624	i	i
--e 9	50961	0.00	1592	i	c
--e 9	50961	0.17	1716	r	a
--e 9	50961	8.31	4888	r	r
--e 9	50961	5.85	4832	r	i
--e 9	50961	8.27	4852	r	c
--e 9	50961	0.00	1860	f	a
--e 9	50961	0.00	1928	f	r
--e 9	50961	0.00	1884	f	i
--e 9	50961	0.00	1884	f	c
--e 10	74748	3.49	1832	i	a
--e 10	74748	0.00	1828	i	r
--e 10	74748	7.11	1744	i	i
--e 10	74748	0.00	1772	i	c
--e 10	74748	0.37	1932	r	a
--e 10	74748	17.97	6456	r	r
--e 10	74748	12.53	6388	r	i
--e 10	74748	18.00	6496	r	c
--e 10	74748	0.01	2360	f	a
--e 10	74748	0.01	2424	f	r
--e 10	74748	0.01	2380	f	i
--e 10	74748	0.01	2360	f	c
diff --git a/TP2/test.sh b/TP2/test.sh
deleted file mode 100644
index 027e8ba3efde7d1522c79da0626662c3b091cfd8..0000000000000000000000000000000000000000
--- a/TP2/test.sh
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/bin/bash
-
-affichage=0
-#taille=100
-
-echo -e "iTest\ttaille\ttemps\tmem\talgo\ttypeTableau"
-
-for iTest in `seq 1 10`
-do
-  taille=$(( `od -An -N4 -tu < /dev/urandom` % 100000))
-
-  for algo in 'i' 'r' 'f'
-  do
-
-    for typeTableau in 'a' 'r' 'i' 'c'
-      do
-      res=`( /usr/bin/time -f "%U\t%M" ./main $algo $taille $typeTableau $affichage > /dev/null ) 2>&1`
-      echo -e "$iTest\t$taille\t$res\t$algo\t$typeTableau"
-    done
-  done
-done
diff --git a/TP2/fusion.R b/TP2/testGeneral.R
similarity index 59%
rename from TP2/fusion.R
rename to TP2/testGeneral.R
index b64e5b999066f2b30b92b715ac3a4b8cb362e1d4..4e3fe27623d9d3b4fd361f90f518a99c0617f617 100755
--- a/TP2/fusion.R
+++ b/TP2/testGeneral.R
@@ -1,7 +1,7 @@
 library(ggplot2)
-perf <- read.table("fusion.dat", header = TRUE)
+perf <- read.table("testGeneral.dat", header = TRUE)
 ggplot(perf, aes(x=taille, y=temps, group=typeTableau, colour=as.character(algo))) + facet_grid(algo ~ typeTableau) +
 geom_point() + geom_smooth() +
- ggtitle("Graphes Comparaison Algos")
+ ggtitle("Test General des Algos")
 
-ggsave("graphe.png")
+ggsave("testGeneral.png")
diff --git a/TP2/testGeneral.dat b/TP2/testGeneral.dat
new file mode 100644
index 0000000000000000000000000000000000000000..caa97a6517251659446997340a3f049ca6f6b210
--- /dev/null
+++ b/TP2/testGeneral.dat
@@ -0,0 +1,61 @@
+iTest	taille	temps	mem	algo	typeTableau
+1	30000	0.04	1396	r	a
+1	40000	0.06	1400	r	a
+1	50000	0.08	1388	r	a
+1	30000	1.38	3200	r	c
+1	40000	2.45	3756	r	c
+1	50000	3.87	4568	r	c
+1	30000	1.38	3192	r	r
+1	40000	2.43	3748	r	r
+1	50000	3.81	4568	r	r
+1	30000	1.35	3312	r	i
+1	40000	2.40	3812	r	i
+1	50000	3.74	4472	r	i
+2	30000	0.03	1352	r	a
+2	40000	0.05	1380	r	a
+2	50000	0.08	1348	r	a
+2	30000	1.37	3168	r	c
+2	40000	2.42	3732	r	c
+2	50000	3.79	4564	r	c
+2	30000	1.39	3248	r	r
+2	40000	2.42	3884	r	r
+2	50000	3.79	4560	r	r
+2	30000	1.35	3236	r	i
+2	40000	2.41	3732	r	i
+2	50000	3.74	4564	r	i
+3	30000	0.04	1384	r	a
+3	40000	0.05	1352	r	a
+3	50000	0.08	1400	r	a
+3	30000	1.43	3228	r	c
+3	40000	2.43	3696	r	c
+3	50000	3.79	4568	r	c
+3	30000	1.42	3168	r	r
+3	40000	2.42	3748	r	r
+3	50000	3.87	4504	r	r
+3	30000	1.41	3192	r	i
+3	40000	2.47	3820	r	i
+3	50000	3.79	4484	r	i
+4	30000	0.04	1344	r	a
+4	40000	0.06	1396	r	a
+4	50000	0.09	1404	r	a
+4	30000	1.37	3184	r	c
+4	40000	2.49	3884	r	c
+4	50000	3.85	4632	r	c
+4	30000	1.36	3136	r	r
+4	40000	2.41	3764	r	r
+4	50000	3.77	4572	r	r
+4	30000	1.34	3204	r	i
+4	40000	2.39	3816	r	i
+4	50000	3.81	4776	r	i
+5	30000	0.04	1400	r	a
+5	40000	0.06	1352	r	a
+5	50000	0.10	1356	r	a
+5	30000	1.36	3192	r	c
+5	40000	2.41	3764	r	c
+5	50000	3.77	4480	r	c
+5	30000	1.38	3236	r	r
+5	40000	2.42	3764	r	r
+5	50000	3.78	4568	r	r
+5	30000	1.34	3156	r	i
+5	40000	2.40	3812	r	i
+5	50000	3.75	4456	r	i
diff --git a/TP2/testGeneral.png b/TP2/testGeneral.png
new file mode 100644
index 0000000000000000000000000000000000000000..eec331107909878fecb953fefbf4622cf8a200f3
Binary files /dev/null and b/TP2/testGeneral.png differ
diff --git a/TP2/fusion.sh b/TP2/testGeneral.sh
similarity index 62%
rename from TP2/fusion.sh
rename to TP2/testGeneral.sh
index 68ef25319035b09d04cdac2a1c0db18df5e25ef5..51af97d1d6a9fa66dacb9707f5793bbf99be5480 100755
--- a/TP2/fusion.sh
+++ b/TP2/testGeneral.sh
@@ -1,23 +1,24 @@
 #!/bin/bash
 
 affichage=0
+versionRap=0
 #taille=100
 
 echo -e "iTest\ttaille\ttemps\tmem\talgo\ttypeTableau"
 
-for iTest in `seq 1 10`
+for iTest in `seq 1 5`
 do
   #taille=$(( `od -An -N4 -tu < /dev/urandom` % 1000000))
   #taille=1000000
 
-  for algo in 'i'
+  for algo in 'r' 'i' 'f'
   do
 
-    for typeTableau in 'a' 'm'
+    for typeTableau in 'a' 'c' 'r' 'i'
       do
-        for taille in 50000 70000 90000
+        for taille in 30000 40000 50000 60000 70000 80000 90000
           do
-            res=`( /usr/bin/time -f "%U\t%M" ./main $algo $taille $typeTableau $affichage > /dev/null ) 2>&1`
+            res=`( /usr/bin/time -f "%U\t%M" ./main $algo $taille $typeTableau $affichage $versionRap > /dev/null ) 2>&1`
             echo -e "$iTest\t$taille\t$res\t$algo\t$typeTableau"
           done
     done
diff --git a/TP2/triRapideAleatoirePivotLast.png b/TP2/triRapideAleatoirePivotLast.png
deleted file mode 100644
index 12e3a9069b7079f395a0760d6e5b1c841d3be0d1..0000000000000000000000000000000000000000
Binary files a/TP2/triRapideAleatoirePivotLast.png and /dev/null differ
diff --git a/TP2/triRapideAleatoirePivotMiddle.png b/TP2/triRapideAleatoirePivotMiddle.png
deleted file mode 100644
index 095d128066982d0d8d764594dfc0854317690cbb..0000000000000000000000000000000000000000
Binary files a/TP2/triRapideAleatoirePivotMiddle.png and /dev/null differ
diff --git a/TP2/triRapideMiddlePivotLast.png b/TP2/triRapideMiddlePivotLast.png
deleted file mode 100644
index d224fe41af957b53faf1acc40a2e80f8aa21a314..0000000000000000000000000000000000000000
Binary files a/TP2/triRapideMiddlePivotLast.png and /dev/null differ
diff --git a/TP2/triRapideMiddlePivotMiddle.png b/TP2/triRapideMiddlePivotMiddle.png
deleted file mode 100644
index a172b89b18c85c73c67b1e7745ddb1607331af75..0000000000000000000000000000000000000000
Binary files a/TP2/triRapideMiddlePivotMiddle.png and /dev/null differ
diff --git a/TP2/tri_rapide.c b/TP2/tri_rapide.c
index 163922cd965a9aba7c16e9bcc7eabf4d6f2f6a63..87e5aa686112c485855b62db16987fd2731a627e 100644
--- a/TP2/tri_rapide.c
+++ b/TP2/tri_rapide.c
@@ -4,19 +4,19 @@
 #include "tri_rapide.h"
 
 
-void triRapide(long* A, size_t n) {
-    sousTriRapide(A,0,n);
+void triRapide(long* A, size_t n, int version) {
+    sousTriRapide(A,0,n, version);
 }
 
-void sousTriRapide(long* A, size_t first, size_t size){
+void sousTriRapide(long* A, size_t first, size_t size, int version){
     if(first+1 < size){
-        size_t middle = partition(A,first,size);
-        sousTriRapide(A,first,middle);
-        sousTriRapide(A,middle+1,size);
+        size_t middle = partition(A,first,size, version);
+        sousTriRapide(A,first,middle, version);
+        sousTriRapide(A,middle+1,size, version);
     }
 }
 
-size_t partition(long* A, size_t first, size_t size) {
+size_t partition(long* A, size_t first, size_t size, int version) {
     //long middle = (size-1) / 2;
     //long pivot = A[middle];
 
@@ -24,8 +24,19 @@ size_t partition(long* A, size_t first, size_t size) {
 
     size_t i = first;
     for(int j = first; j+2 <= size; j++){
-        if(A[j] <= pivot){
-            permuter(A,i,j);
+        if(A[j] <= pivot) {
+            // Version 1: optimisation sur les tableaux ranges
+            if(version == 1) {
+              // Si i = j, pas besoin de permuter
+              if(i != j ) {
+                permuter(A,i,j);
+              }
+            }
+            // Version 0: celle de base
+            else {
+              permuter(A,i,j);
+            }
+
             i++;
         }
     }
diff --git a/TP2/tri_rapide.h b/TP2/tri_rapide.h
index e17099f3db77cc6284f5e220d7f930886672a500..3ec05885461ce2020df9e87a00663a8bb931ee2b 100644
--- a/TP2/tri_rapide.h
+++ b/TP2/tri_rapide.h
@@ -3,8 +3,8 @@
 #include <stdint.h>
 #include <stdlib.h>
 
-void triRapide(long* A, size_t n);
-void sousTriRapide(long* A, size_t first, size_t size);
-size_t partition(long* A, size_t first, size_t size);
+void triRapide(long* A, size_t n, int version);
+void sousTriRapide(long* A, size_t first, size_t size, int version);
+size_t partition(long* A, size_t first, size_t size , int version);
 void permuter(long* A,size_t i,size_t j);
-#endif //TRIS_H
\ No newline at end of file
+#endif //TRIS_H