Skip to content
Snippets Groups Projects
Commit c05172cb authored by Kinadinova Dariya's avatar Kinadinova Dariya
Browse files

analyse_tris

parent 646bd925
Branches
No related tags found
No related merge requests found
......@@ -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.98
5; 10.00; 7.42
6; 15.00; 11.32
7; 21.00; 14.50
8; 28.00; 19.66
9; 36.00; 23.54
10; 45.00; 29.06
11; 55.00; 33.92
12; 66.00; 40.18
13; 78.00; 46.80
14; 91.00; 55.38
15; 105.00; 63.56
16; 120.00; 68.94
17; 136.00; 82.32
18; 153.00; 94.00
19; 171.00; 97.78
20; 190.00; 110.16
21; 210.00; 118.80
22; 231.00; 132.90
23; 253.00; 146.12
24; 276.00; 159.76
25; 300.00; 171.24
26; 325.00; 186.10
27; 351.00; 198.52
28; 378.00; 217.76
29; 406.00; 233.10
30; 435.00; 239.36
31; 465.00; 263.44
32; 496.00; 272.58
33; 528.00; 299.42
34; 561.00; 311.48
35; 595.00; 323.00
36; 630.00; 346.86
37; 666.00; 360.70
38; 703.00; 386.82
39; 741.00; 405.70
40; 780.00; 430.26
41; 820.00; 455.18
42; 861.00; 462.10
43; 903.00; 495.82
44; 946.00; 526.60
45; 990.00; 533.54
46; 1035.00; 567.98
47; 1081.00; 587.28
48; 1128.00; 618.48
49; 1176.00; 633.90
50; 1225.00; 659.22
51; 1275.00; 657.48
52; 1326.00; 711.12
53; 1378.00; 722.72
54; 1431.00; 761.36
55; 1485.00; 809.52
56; 1540.00; 816.98
57; 1596.00; 852.90
58; 1653.00; 877.80
59; 1711.00; 933.96
60; 1770.00; 938.76
61; 1830.00; 970.32
62; 1891.00; 993.92
63; 1953.00; 1034.12
64; 2016.00; 1038.70
65; 2080.00; 1094.32
66; 2145.00; 1125.18
67; 2211.00; 1155.90
68; 2278.00; 1206.86
69; 2346.00; 1260.22
70; 2415.00; 1262.76
71; 2485.00; 1285.74
72; 2556.00; 1358.64
73; 2628.00; 1381.72
74; 2701.00; 1401.52
75; 2775.00; 1477.98
76; 2850.00; 1493.06
77; 2926.00; 1526.38
78; 3003.00; 1560.82
79; 3081.00; 1617.40
80; 3160.00; 1663.76
81; 3240.00; 1691.06
82; 3321.00; 1744.06
83; 3403.00; 1752.94
84; 3486.00; 1819.04
85; 3570.00; 1868.20
86; 3655.00; 1917.44
87; 3741.00; 1921.42
88; 3828.00; 2030.48
89; 3916.00; 2050.78
90; 4005.00; 2078.02
91; 4095.00; 2152.64
92; 4186.00; 2185.64
93; 4278.00; 2221.32
94; 4371.00; 2304.18
95; 4465.00; 2331.54
96; 4560.00; 2387.02
97; 4656.00; 2416.54
98; 4753.00; 2460.58
99; 4851.00; 2562.00
100; 4950.00; 2549.66
3; 3.00; 2.54
4; 6.00; 4.94
5; 10.00; 7.74
6; 15.00; 10.94
7; 21.00; 15.12
8; 28.00; 18.32
9; 36.00; 24.46
10; 45.00; 28.74
11; 55.00; 36.26
12; 66.00; 42.60
13; 78.00; 47.62
14; 91.00; 55.40
15; 105.00; 64.76
16; 120.00; 75.72
17; 136.00; 81.50
18; 153.00; 93.78
19; 171.00; 99.70
20; 190.00; 108.00
21; 210.00; 121.72
22; 231.00; 136.70
23; 253.00; 148.32
24; 276.00; 154.62
25; 300.00; 177.60
26; 325.00; 185.98
27; 351.00; 195.04
28; 378.00; 214.66
29; 406.00; 228.92
30; 435.00; 243.02
31; 465.00; 263.00
32; 496.00; 278.32
33; 528.00; 300.08
34; 561.00; 313.08
35; 595.00; 332.32
36; 630.00; 347.46
37; 666.00; 363.56
38; 703.00; 385.38
39; 741.00; 402.26
40; 780.00; 431.92
41; 820.00; 449.30
42; 861.00; 468.26
43; 903.00; 482.66
44; 946.00; 514.60
45; 990.00; 547.12
46; 1035.00; 558.56
47; 1081.00; 591.68
48; 1128.00; 596.86
49; 1176.00; 638.16
50; 1225.00; 662.70
51; 1275.00; 682.62
52; 1326.00; 707.10
53; 1378.00; 754.44
54; 1431.00; 758.76
55; 1485.00; 804.98
56; 1540.00; 815.14
57; 1596.00; 856.56
58; 1653.00; 857.58
59; 1711.00; 914.12
60; 1770.00; 921.60
61; 1830.00; 983.40
62; 1891.00; 987.16
63; 1953.00; 1037.34
64; 2016.00; 1086.56
65; 2080.00; 1084.88
66; 2145.00; 1158.24
67; 2211.00; 1172.10
68; 2278.00; 1185.94
69; 2346.00; 1220.80
70; 2415.00; 1292.92
71; 2485.00; 1308.74
72; 2556.00; 1343.22
73; 2628.00; 1390.08
74; 2701.00; 1428.48
75; 2775.00; 1445.40
76; 2850.00; 1475.92
77; 2926.00; 1534.34
78; 3003.00; 1604.52
79; 3081.00; 1610.94
80; 3160.00; 1674.74
81; 3240.00; 1693.34
82; 3321.00; 1729.02
83; 3403.00; 1799.78
84; 3486.00; 1800.70
85; 3570.00; 1884.10
86; 3655.00; 1954.98
87; 3741.00; 1964.98
88; 3828.00; 2012.42
89; 3916.00; 2011.72
90; 4005.00; 2080.66
91; 4095.00; 2147.18
92; 4186.00; 2161.90
93; 4278.00; 2216.44
94; 4371.00; 2290.34
95; 4465.00; 2347.26
96; 4560.00; 2389.54
97; 4656.00; 2413.08
98; 4753.00; 2483.92
99; 4851.00; 2523.12
100; 4950.00; 2608.62
......@@ -41,7 +41,7 @@ def analyser_tri(tri: Callable[[list[T], Callable[[T, T], int]], NoneType],
res += compare.counter
return res / nbre_essais
def comp_sort(l:list[T], comp: Callable[[T, T], int] = compare):
def tri_comp(l:list[T], comp: Callable[[T, T], int] = compare):
"""à_remplacer_par_ce_que_fait_la_fonction
Précondition :
......@@ -49,8 +49,7 @@ def comp_sort(l:list[T], comp: Callable[[T, T], int] = compare):
$$$
"""
sorted_l = sorted(l, key= lambda x: comp(x,x))
return sorted_l
sorted(l, key= lambda x: comp(x,x))
if (__name__ == '__main__'):
......@@ -70,7 +69,7 @@ if (__name__ == '__main__'):
# inutile de moyenner pour le tri par sélection
c_insert[t] = analyser_tri(tri_insert, NB_ESSAIS, t)
# for sorting
c_sort[t] = analyser_tri(comp_sort, NB_ESSAIS, t)
c_sort[t] = analyser_tri(tri_comp, 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'
......@@ -80,8 +79,7 @@ if (__name__ == '__main__'):
for t in range(TAILLE_MAX + 1):
sortie.write(ligne.format(t,
c_select[t],
c_insert[t],
c_sort[t]))
c_insert[t]))
# Représentation graphique
plt.plot(list(range(TAILLE_MAX + 1)), c_select, 'b.', label='Tri sélection')
......
import timeit
import matplotlib.pyplot as plt
\ No newline at end of file
from random import shuffle
import timeit
import matplotlib.pyplot as plt
from ap_decorators import count
from compare import compare
from analyse_tris import tri_select
from math import sqrt
from analyse_tris import analyser_tri
# Préliminaires
def liste_alea(n: int) -> list[int]:
"""construit une liste de longueur n contenant les entiers 0 à n-1 mélangés
......@@ -15,5 +19,69 @@ def liste_alea(n: int) -> list[int]:
shuffle(l)
return l
# Évaluation expérimentale de la complexité en temps
TAILLE_MAX = 100
L = []
T = []
for t in range(1, TAILLE_MAX + 1):
rlist = liste_alea(t)
time = timeit.timeit(stmt='tri_select(l)', setup='from __main__ import tri_select, l', globals={'l': rlist}, number=5000)
L.append(t)
times.append(time)
plt.plot(lengths, times, label='Selection Sort')
plt.xlabel('Length of List')
plt.ylabel('Time (s)')
plt.title('Selection Sort Execution Time')
plt.legend()
plt.grid(True)
plt.show()
#3
import timeit
import matplotlib.pyplot as plt
import random
from analyse_tris import tri_insert
Nmax = 100
number = 5000
best_case = []
average_case = []
worst_case = []
for t in range(1, Nmax + 1):
# Best Case: Sorted List
sorted_list = list(range(t))
best_time = timeit.timeit(stmt='tri_insert(liste)', setup='from __main__ import tri_insert, liste', globals={'liste': sorted_list}, number=number)
best_case.append(best_time)
# Average Case: Random List
random_list = random.sample(range(t), t)
average_time = timeit.timeit(stmt='tri_insert(liste)', setup='from __main__ import tri_insert, liste; import random', globals={'liste': random_list}, number=number)
shuffle_time = timeit.timeit(stmt='random.shuffle(liste)', setup='import random; liste = list(range(t))', globals={'t': t, 'random': random}, number=number)
average_case.append(average_time - shuffle_time)
# Worst Case: Reverse Sorted List
reverse_sorted_list = list(range(t - 1, -1, -1))
worst_time = timeit.timeit(stmt='tri_insert(liste[::-1])', setup='from __main__ import tri_insert, liste', globals={'liste': reverse_sorted_list}, number=number)
reverse_time = timeit.timeit(stmt='liste.reverse()', setup='liste = list(range(t))', globals={'t': t}, number=number)
worst_case.append(worst_time - reverse_time)
# Plotting
plt.plot(range(1, Nmax + 1), best_case, label='Best Case')
plt.plot(range(1, Nmax + 1), average_case, label='Average Case')
plt.plot(range(1, Nmax + 1), worst_case, label='Worst Case')
plt.xlabel('Length of List')
plt.ylabel('Time (s)')
plt.title('Insertion Sort Time Complexity')
plt.legend()
plt.grid(True)
plt.show()
tp7/tris_nbcomp.png

28.8 KiB | W: | H:

tp7/tris_nbcomp.png

28.7 KiB | W: | H:

tp7/tris_nbcomp.png
tp7/tris_nbcomp.png
tp7/tris_nbcomp.png
tp7/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