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