diff --git a/.DS_Store b/.DS_Store
index d619dc514f7fbaf47beba35e00db39750663a3e3..05a0c2a2a552f6ab2fbe63fe7d4dda73b8f717f8 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/Tp07/analyse_tris.csv b/Tp07/analyse_tris.csv
index e734b51b76516481613d93c68ce39fe47026adc3..d0a85a370a866afaecec50f42bde576752f9af83 100644
--- a/Tp07/analyse_tris.csv
+++ b/Tp07/analyse_tris.csv
@@ -2,101 +2,101 @@ taille;"tri séléction";"tri insertion"
   0;    0.00;    0.00
   1;    0.00;    0.00
   2;    1.00;    1.00
-  3;    3.00;    2.64
-  4;    6.00;    4.92
-  5;   10.00;    7.54
-  6;   15.00;   10.94
-  7;   21.00;   15.32
-  8;   28.00;   19.64
-  9;   36.00;   25.24
- 10;   45.00;   29.92
- 11;   55.00;   36.68
- 12;   66.00;   43.12
- 13;   78.00;   47.28
- 14;   91.00;   55.54
- 15;  105.00;   63.20
- 16;  120.00;   72.32
- 17;  136.00;   82.30
- 18;  153.00;   89.66
- 19;  171.00;  101.32
- 20;  190.00;  112.30
- 21;  210.00;  123.76
- 22;  231.00;  132.08
- 23;  253.00;  148.94
- 24;  276.00;  158.76
- 25;  300.00;  172.68
- 26;  325.00;  181.14
- 27;  351.00;  199.98
- 28;  378.00;  212.36
- 29;  406.00;  227.14
- 30;  435.00;  249.68
- 31;  465.00;  263.34
- 32;  496.00;  277.68
- 33;  528.00;  274.10
- 34;  561.00;  313.86
- 35;  595.00;  330.42
- 36;  630.00;  354.54
- 37;  666.00;  364.18
- 38;  703.00;  390.42
- 39;  741.00;  401.12
- 40;  780.00;  430.32
- 41;  820.00;  446.28
- 42;  861.00;  478.54
- 43;  903.00;  497.62
- 44;  946.00;  510.08
- 45;  990.00;  539.00
- 46; 1035.00;  564.02
- 47; 1081.00;  599.94
- 48; 1128.00;  606.68
- 49; 1176.00;  632.84
- 50; 1225.00;  653.74
- 51; 1275.00;  674.24
- 52; 1326.00;  704.72
- 53; 1378.00;  734.54
- 54; 1431.00;  760.22
- 55; 1485.00;  788.30
- 56; 1540.00;  819.02
- 57; 1596.00;  857.40
- 58; 1653.00;  890.08
- 59; 1711.00;  912.04
- 60; 1770.00;  938.86
- 61; 1830.00;  971.26
- 62; 1891.00; 1025.26
- 63; 1953.00; 1046.14
- 64; 2016.00; 1090.40
- 65; 2080.00; 1096.62
- 66; 2145.00; 1145.48
- 67; 2211.00; 1173.32
- 68; 2278.00; 1189.14
- 69; 2346.00; 1251.80
- 70; 2415.00; 1261.46
- 71; 2485.00; 1306.84
- 72; 2556.00; 1332.00
- 73; 2628.00; 1376.90
- 74; 2701.00; 1417.70
- 75; 2775.00; 1451.02
- 76; 2850.00; 1518.80
- 77; 2926.00; 1557.62
- 78; 3003.00; 1573.26
- 79; 3081.00; 1628.08
- 80; 3160.00; 1643.72
- 81; 3240.00; 1705.26
- 82; 3321.00; 1735.44
- 83; 3403.00; 1812.70
- 84; 3486.00; 1795.68
- 85; 3570.00; 1870.22
- 86; 3655.00; 1904.20
- 87; 3741.00; 1918.00
- 88; 3828.00; 2008.04
- 89; 3916.00; 2041.26
- 90; 4005.00; 2080.34
- 91; 4095.00; 2129.18
- 92; 4186.00; 2178.48
- 93; 4278.00; 2213.48
- 94; 4371.00; 2246.84
- 95; 4465.00; 2334.28
- 96; 4560.00; 2348.12
- 97; 4656.00; 2408.74
- 98; 4753.00; 2505.40
- 99; 4851.00; 2521.26
-100; 4950.00; 2606.24
+  3;    3.00;    2.78
+  4;    6.00;    4.86
+  5;   10.00;    7.56
+  6;   15.00;   10.62
+  7;   21.00;   14.12
+  8;   28.00;   19.00
+  9;   36.00;   23.58
+ 10;   45.00;   29.20
+ 11;   55.00;   35.60
+ 12;   66.00;   40.76
+ 13;   78.00;   48.22
+ 14;   91.00;   56.02
+ 15;  105.00;   62.76
+ 16;  120.00;   73.82
+ 17;  136.00;   81.32
+ 18;  153.00;   89.52
+ 19;  171.00;  100.66
+ 20;  190.00;  115.20
+ 21;  210.00;  123.62
+ 22;  231.00;  129.50
+ 23;  253.00;  146.52
+ 24;  276.00;  157.62
+ 25;  300.00;  169.18
+ 26;  325.00;  188.66
+ 27;  351.00;  199.38
+ 28;  378.00;  211.60
+ 29;  406.00;  226.52
+ 30;  435.00;  248.80
+ 31;  465.00;  263.38
+ 32;  496.00;  280.52
+ 33;  528.00;  295.10
+ 34;  561.00;  310.34
+ 35;  595.00;  330.08
+ 36;  630.00;  348.34
+ 37;  666.00;  363.84
+ 38;  703.00;  390.04
+ 39;  741.00;  406.18
+ 40;  780.00;  418.70
+ 41;  820.00;  447.42
+ 42;  861.00;  476.70
+ 43;  903.00;  497.48
+ 44;  946.00;  517.38
+ 45;  990.00;  538.90
+ 46; 1035.00;  550.88
+ 47; 1081.00;  586.10
+ 48; 1128.00;  598.54
+ 49; 1176.00;  620.66
+ 50; 1225.00;  663.70
+ 51; 1275.00;  675.52
+ 52; 1326.00;  705.38
+ 53; 1378.00;  752.26
+ 54; 1431.00;  749.96
+ 55; 1485.00;  799.52
+ 56; 1540.00;  825.42
+ 57; 1596.00;  852.20
+ 58; 1653.00;  872.86
+ 59; 1711.00;  922.92
+ 60; 1770.00;  932.16
+ 61; 1830.00;  978.56
+ 62; 1891.00; 1003.06
+ 63; 1953.00; 1018.86
+ 64; 2016.00; 1071.96
+ 65; 2080.00; 1100.92
+ 66; 2145.00; 1138.42
+ 67; 2211.00; 1154.54
+ 68; 2278.00; 1200.60
+ 69; 2346.00; 1231.10
+ 70; 2415.00; 1284.74
+ 71; 2485.00; 1305.86
+ 72; 2556.00; 1375.20
+ 73; 2628.00; 1371.32
+ 74; 2701.00; 1392.24
+ 75; 2775.00; 1455.28
+ 76; 2850.00; 1505.10
+ 77; 2926.00; 1549.66
+ 78; 3003.00; 1601.26
+ 79; 3081.00; 1607.22
+ 80; 3160.00; 1658.96
+ 81; 3240.00; 1697.28
+ 82; 3321.00; 1720.70
+ 83; 3403.00; 1764.68
+ 84; 3486.00; 1823.84
+ 85; 3570.00; 1840.92
+ 86; 3655.00; 1951.90
+ 87; 3741.00; 1960.02
+ 88; 3828.00; 1963.22
+ 89; 3916.00; 2054.00
+ 90; 4005.00; 2058.26
+ 91; 4095.00; 2144.26
+ 92; 4186.00; 2219.90
+ 93; 4278.00; 2192.90
+ 94; 4371.00; 2280.60
+ 95; 4465.00; 2318.96
+ 96; 4560.00; 2355.78
+ 97; 4656.00; 2427.80
+ 98; 4753.00; 2472.70
+ 99; 4851.00; 2529.78
+100; 4950.00; 2573.34
diff --git a/Tp07/analyse_tris2.py b/Tp07/analyse_tris2.py
index e0a6b738c6096de1c0ece27483026caa3461ff9c..95d973dfcba87f4d741e642cf6537047c17a63b2 100755
--- a/Tp07/analyse_tris2.py
+++ b/Tp07/analyse_tris2.py
@@ -16,6 +16,9 @@ from compare import compare
 from ap_decorators import count
 from tris import *
 from functools import cmp_to_key
+import timeit
+import matplotlib.pyplot as plt
+from tris import liste_alea, tri_select
 
 ################################################
 #  ANALYSE EMPIRIQUE DES TRIS                  #
@@ -81,14 +84,34 @@ if (__name__ == '__main__'):
                                       c_insert[t]))
 
     # Représentation graphique
-    plt.plot(list(range(TAILLE_MAX + 1)), c_select, 'b.', label='Tri sélection')
-    plt.plot(list(range(TAILLE_MAX + 1)), c_insert, 'r.', label='Tri insertion')
-    plt.plot(list(range(TAILLE_MAX + 1)), c_sort, 'g.', label='Tri sort')
-    plt.title('Tris : nbre de comparaisons')
-    plt.legend()
-    plt.xlabel('n = taille des listes')
-    plt.ylabel('c(n) = nbre de comparaisons')
-    plt.savefig('tris_nbcomp.png')
-    plt.show()
+#     plt.plot(list(range(TAILLE_MAX + 1)), c_select, 'b.', label='Tri sélection')
+#     plt.plot(list(range(TAILLE_MAX + 1)), c_insert, 'r.', label='Tri insertion')
+#     plt.plot(list(range(TAILLE_MAX + 1)), c_sort, 'g.', label='Tri sort')
+#     plt.title('Tris : nbre de comparaisons')
+#     plt.legend()
+#     plt.xlabel('n = taille des listes')
+#     plt.ylabel('c(n) = nbre de comparaisons')
+#     plt.savefig('tris_nbcomp.png')
+#     plt.show()
 
+# Cas du tri par selection
+# >>> timeit.timeit(stmt='tri_select', setup = f'from tris import liste_alea, tri_select; l=liste_alea({101})', number = 5000)
+# 4.4625019654631615e-05
 
+longueurs = liste_alea(101)
+
+# Mesurer le temps d'exécution pour chaque longueur de liste
+temps_executions = []
+for longueur in longueurs:
+    # Exécuter timeit pour mesurer le temps d'exécution du tri_select avec une liste de longueur donnée
+    temps_execution = timeit.timeit(stmt='tri_select(l)', 
+                                    setup=f'from tris import liste_alea, tri_select; l=liste_alea({longueur})', 
+                                    number=5000)
+    temps_executions.append(temps_execution)
+
+# Tracer la courbe des temps mesurés en fonction de la longueur des listes
+plt.plot(longueurs, temps_executions, 'g.')
+plt.title('Temps d\'exécution de tri_select en fonction de la longueur des listes')
+plt.xlabel('Longueur de la liste')
+plt.ylabel('Temps d\'exécution (secondes)')
+plt.show()
\ No newline at end of file
diff --git a/Tp07/temps tri_select-longueur_liste.png b/Tp07/temps tri_select-longueur_liste.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9f3ae9e0f0a6703835801ddb429779c6c93bbbb
Binary files /dev/null and b/Tp07/temps tri_select-longueur_liste.png differ
diff --git a/Tp07/tris.py b/Tp07/tris.py
old mode 100644
new mode 100755
index 18df74065a465ff7025f8fc807a4bd08958869a5..c367829d6553fb837799e26caa813a20a014f4f6
--- a/Tp07/tris.py
+++ b/Tp07/tris.py
@@ -16,6 +16,7 @@ Tris de listes
 
 """
 
+from random import shuffle
 from types import NoneType
 from typing import Callable, TypeVar
 from compare import compare
@@ -186,6 +187,18 @@ def tri_insert(liste: list[T], comp: Callable[[T, T], int] = compare) -> NoneTyp
         inserer(liste, i, comp=comp)
         # alors la tranche liste[0:i+1] est triée
     # à l'issue de l'itération la tranche liste[0:n] est triée
+    
+def liste_alea(n:int) -> list[int]:
+    """
+    Renvoie une liste de 0 à n-1 mélangé
+    Précondition : aucune
+    Exemple(s) :
+    $$$ 
+
+    """
+    res = list(range(n))
+    shuffle(res)
+    return res
 
 
 if (__name__ == '__main__'):
diff --git a/Tp07/tris_nbcomp.png b/Tp07/tris_nbcomp.png
index 63a4200bc70ea4a5c06357b44eb7161e03a6373e..b53b246d0a08e23d9ecf8a177396f3fd5cc0eff4 100644
Binary files a/Tp07/tris_nbcomp.png and b/Tp07/tris_nbcomp.png differ