diff --git a/.DS_Store b/.DS_Store
index 2123ae47bd8ef83e1b398d97f7ec8e2ce611ea62..314ae6525454bb8cda41d76ab1fb1f8d62dc8f23 100644
Binary files a/.DS_Store and b/.DS_Store differ
diff --git a/Tp07/analyse_tris.csv b/Tp07/analyse_tris.csv
index 7526113c3f8b7814574ddf30e1f0af02fef32a18..047dc861a8519f12ee7b66dbe66ef9c746af2890 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.62
-  4;    6.00;    4.96
-  5;   10.00;    7.72
-  6;   15.00;   11.44
-  7;   21.00;   15.40
-  8;   28.00;   19.02
-  9;   36.00;   24.62
- 10;   45.00;   28.80
- 11;   55.00;   35.70
- 12;   66.00;   40.96
- 13;   78.00;   50.26
- 14;   91.00;   56.38
- 15;  105.00;   66.54
- 16;  120.00;   73.34
- 17;  136.00;   81.82
- 18;  153.00;   94.12
- 19;  171.00;  103.36
- 20;  190.00;  109.78
- 21;  210.00;  121.60
- 22;  231.00;  131.76
- 23;  253.00;  143.06
- 24;  276.00;  156.52
- 25;  300.00;  175.36
- 26;  325.00;  182.90
- 27;  351.00;  192.02
- 28;  378.00;  212.32
- 29;  406.00;  227.84
- 30;  435.00;  243.40
- 31;  465.00;  262.58
- 32;  496.00;  278.14
- 33;  528.00;  293.86
- 34;  561.00;  312.92
- 35;  595.00;  332.28
- 36;  630.00;  344.32
- 37;  666.00;  354.34
- 38;  703.00;  397.18
- 39;  741.00;  410.56
- 40;  780.00;  429.42
- 41;  820.00;  453.40
- 42;  861.00;  461.80
- 43;  903.00;  485.46
- 44;  946.00;  517.10
- 45;  990.00;  540.00
- 46; 1035.00;  554.30
- 47; 1081.00;  575.34
- 48; 1128.00;  607.34
- 49; 1176.00;  620.18
- 50; 1225.00;  647.48
- 51; 1275.00;  693.96
- 52; 1326.00;  712.04
- 53; 1378.00;  732.64
- 54; 1431.00;  768.84
- 55; 1485.00;  794.12
- 56; 1540.00;  820.92
- 57; 1596.00;  822.34
- 58; 1653.00;  877.84
- 59; 1711.00;  917.66
- 60; 1770.00;  948.42
- 61; 1830.00;  956.04
- 62; 1891.00; 1005.00
- 63; 1953.00; 1042.60
- 64; 2016.00; 1037.82
- 65; 2080.00; 1087.02
- 66; 2145.00; 1147.22
- 67; 2211.00; 1184.68
- 68; 2278.00; 1215.44
- 69; 2346.00; 1239.10
- 70; 2415.00; 1247.28
- 71; 2485.00; 1310.14
- 72; 2556.00; 1336.78
- 73; 2628.00; 1395.50
- 74; 2701.00; 1417.10
- 75; 2775.00; 1464.58
- 76; 2850.00; 1482.62
- 77; 2926.00; 1545.84
- 78; 3003.00; 1566.48
- 79; 3081.00; 1622.52
- 80; 3160.00; 1637.64
- 81; 3240.00; 1686.34
- 82; 3321.00; 1740.88
- 83; 3403.00; 1789.50
- 84; 3486.00; 1814.38
- 85; 3570.00; 1857.88
- 86; 3655.00; 1929.30
- 87; 3741.00; 1980.88
- 88; 3828.00; 1973.52
- 89; 3916.00; 2066.94
- 90; 4005.00; 2085.78
- 91; 4095.00; 2125.72
- 92; 4186.00; 2220.08
- 93; 4278.00; 2240.44
- 94; 4371.00; 2283.70
- 95; 4465.00; 2359.88
- 96; 4560.00; 2385.16
- 97; 4656.00; 2450.00
- 98; 4753.00; 2473.96
- 99; 4851.00; 2531.32
-100; 4950.00; 2564.28
+  3;    3.00;    2.64
+  4;    6.00;    5.00
+  5;   10.00;    7.86
+  6;   15.00;   11.46
+  7;   21.00;   14.70
+  8;   28.00;   19.64
+  9;   36.00;   25.42
+ 10;   45.00;   29.94
+ 11;   55.00;   35.96
+ 12;   66.00;   43.34
+ 13;   78.00;   48.08
+ 14;   91.00;   53.64
+ 15;  105.00;   63.70
+ 16;  120.00;   71.38
+ 17;  136.00;   83.42
+ 18;  153.00;   91.68
+ 19;  171.00;  101.96
+ 20;  190.00;  115.44
+ 21;  210.00;  123.02
+ 22;  231.00;  132.92
+ 23;  253.00;  142.60
+ 24;  276.00;  153.86
+ 25;  300.00;  172.64
+ 26;  325.00;  184.34
+ 27;  351.00;  198.60
+ 28;  378.00;  217.44
+ 29;  406.00;  225.00
+ 30;  435.00;  239.34
+ 31;  465.00;  259.34
+ 32;  496.00;  280.90
+ 33;  528.00;  284.24
+ 34;  561.00;  310.76
+ 35;  595.00;  325.26
+ 36;  630.00;  343.40
+ 37;  666.00;  359.78
+ 38;  703.00;  375.08
+ 39;  741.00;  400.10
+ 40;  780.00;  430.74
+ 41;  820.00;  452.26
+ 42;  861.00;  468.32
+ 43;  903.00;  495.84
+ 44;  946.00;  507.40
+ 45;  990.00;  533.92
+ 46; 1035.00;  555.38
+ 47; 1081.00;  598.14
+ 48; 1128.00;  599.04
+ 49; 1176.00;  635.12
+ 50; 1225.00;  658.20
+ 51; 1275.00;  676.26
+ 52; 1326.00;  709.66
+ 53; 1378.00;  732.12
+ 54; 1431.00;  760.52
+ 55; 1485.00;  802.84
+ 56; 1540.00;  807.68
+ 57; 1596.00;  846.38
+ 58; 1653.00;  861.46
+ 59; 1711.00;  890.74
+ 60; 1770.00;  946.72
+ 61; 1830.00;  992.92
+ 62; 1891.00; 1023.54
+ 63; 1953.00; 1019.50
+ 64; 2016.00; 1057.94
+ 65; 2080.00; 1086.24
+ 66; 2145.00; 1128.60
+ 67; 2211.00; 1165.44
+ 68; 2278.00; 1204.84
+ 69; 2346.00; 1219.90
+ 70; 2415.00; 1281.70
+ 71; 2485.00; 1316.64
+ 72; 2556.00; 1342.46
+ 73; 2628.00; 1418.52
+ 74; 2701.00; 1405.10
+ 75; 2775.00; 1451.02
+ 76; 2850.00; 1518.22
+ 77; 2926.00; 1518.80
+ 78; 3003.00; 1564.58
+ 79; 3081.00; 1623.58
+ 80; 3160.00; 1642.04
+ 81; 3240.00; 1710.88
+ 82; 3321.00; 1745.06
+ 83; 3403.00; 1764.28
+ 84; 3486.00; 1816.94
+ 85; 3570.00; 1854.54
+ 86; 3655.00; 1912.42
+ 87; 3741.00; 1968.82
+ 88; 3828.00; 1975.62
+ 89; 3916.00; 2040.76
+ 90; 4005.00; 2121.34
+ 91; 4095.00; 2139.34
+ 92; 4186.00; 2212.86
+ 93; 4278.00; 2208.74
+ 94; 4371.00; 2274.04
+ 95; 4465.00; 2334.48
+ 96; 4560.00; 2351.64
+ 97; 4656.00; 2429.18
+ 98; 4753.00; 2424.46
+ 99; 4851.00; 2481.82
+100; 4950.00; 2554.04
diff --git a/Tp07/analyse_tris2.py b/Tp07/analyse_tris2.py
new file mode 100755
index 0000000000000000000000000000000000000000..e0a6b738c6096de1c0ece27483026caa3461ff9c
--- /dev/null
+++ b/Tp07/analyse_tris2.py
@@ -0,0 +1,94 @@
+#!/usr/bin/python3
+# -*- coding: utf-8 -*-
+
+"""
+:mod:`analyse_tris` module
+:author: FIL - Faculté des Sciences et Technologies - Univ. Lille <http://portail.fil.univ-lille1.fr>_
+:date: janvier 2017
+:dernières révisions: février 2018, février 2019
+
+Analyse empirique des tris
+
+"""
+from random import shuffle
+from typing import Callable
+from compare import compare
+from ap_decorators import count
+from tris import *
+from functools import cmp_to_key
+
+################################################
+#  ANALYSE EMPIRIQUE DES TRIS                  #
+################################################
+
+# ajout d'un compteur à la fonction compare
+compare = count(compare)
+
+def analyser_tri(tri: Callable[[list[T], Callable[[T, T], int]], NoneType],
+                 nbre_essais: int,
+                 taille: int) -> float:
+    """
+    renvoie: le nombre moyen de comparaisons effectuées par l'algo tri
+         pour trier des listes de taille t, la moyenne étant calculée
+         sur n listes aléatoires.
+    précondition: n > 0, t >= 0, la fonc
+    """
+    res = 0
+    for i in range(nbre_essais):
+        compare.counter = 0
+        l = [k for k in range(taille)]
+        shuffle(l)
+        tri(l, compare)
+        res += compare.counter
+    return res / nbre_essais
+
+def tri_sort(l:list[int], cmp):
+    """à_remplacer_par_ce_que_fait_la_fonction
+
+    Précondition : 
+    Exemple(s) :
+    $$$ 
+
+    """
+    l.sort(key = cmp_to_key(cmp))
+
+
+if (__name__ == '__main__'):
+    from matplotlib import pyplot as plt
+    
+    # Calcul de nombres moyens de comparaison pour des listes
+    # de tailles comprises entre 0 et TAILLE_MAX
+    NB_ESSAIS = 50
+    TAILLE_MAX = 100
+    c_select = [0.0] * (TAILLE_MAX + 1)
+    c_insert = [0.0] * (TAILLE_MAX + 1)
+    c_sort = [0.0] * (TAILLE_MAX + 1)
+    
+    for t in range(TAILLE_MAX + 1):
+        c_select[t] = analyser_tri(tri_select, 1, t)
+        # inutile de moyenner pour le tri par sélection
+        c_insert[t] = analyser_tri(tri_insert, NB_ESSAIS, t)
+        c_sort[t] = analyser_tri(tri_sort, NB_ESSAIS, t)
+
+    # Sauvegarde des données calculées dans un fichier au format CSV
+    prem_ligne = 'taille;"tri séléction";"tri insertion"\n'
+    ligne = '{:3d};{:8.2f};{:8.2f}\n'
+    with open('analyse_tris.csv', 'wt', encoding='utf8') as sortie:
+        sortie.write(prem_ligne)
+        for t in range(TAILLE_MAX + 1):
+            sortie.write(ligne.format(t,
+                                      c_select[t],
+                                      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()
+
+
diff --git a/Tp07/tris_nbcomp.png b/Tp07/tris_nbcomp.png
index a2ce8bdaaad372e005af87d22e90db36c52fb421..d1437223e647c02958e0b2f80200baade2d587cf 100644
Binary files a/Tp07/tris_nbcomp.png and b/Tp07/tris_nbcomp.png differ