Skip to content
Snippets Groups Projects
Commit cf354acf authored by Louis Chmielewski's avatar Louis Chmielewski
Browse files

cas tris par selection python et graphique analyse_tris2

parent 4136f8ee
Branches
No related tags found
No related merge requests found
No preview for this file type
......@@ -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
......@@ -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
Tp07/temps tri_select-longueur_liste.png

27.5 KiB

Tp07/tris.py 100644 → 100755
......@@ -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__'):
......
Tp07/tris_nbcomp.png

29 KiB | W: | H:

Tp07/tris_nbcomp.png

29 KiB | W: | H:

Tp07/tris_nbcomp.png
Tp07/tris_nbcomp.png
Tp07/tris_nbcomp.png
Tp07/tris_nbcomp.png
  • 2-up
  • Swipe
  • Onion skin
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment