|
|
|
@ -187,24 +187,35 @@ def recherche_dichoto(T, val):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
###################################
|
|
|
|
|
# Mesure du temps d'exécution #
|
|
|
|
|
###################################
|
|
|
|
|
|
|
|
|
|
def mesure_temps_execution(algo, tailles):
|
|
|
|
|
temps = []
|
|
|
|
|
for taille in tailles:
|
|
|
|
|
data = [random.randint(1, 1000) for _ in range(taille)]
|
|
|
|
|
debut = time.time()
|
|
|
|
|
algo(data)
|
|
|
|
|
fin = time.time()
|
|
|
|
|
temps.append(fin - debut)
|
|
|
|
|
return temps
|
|
|
|
|
for _ in range(5): # Moyenne pour 5 exécutions de chaque taille
|
|
|
|
|
T = [random.randint(1, 1000) for _ in range(taille)]
|
|
|
|
|
debut = time.time()
|
|
|
|
|
algo(T)
|
|
|
|
|
temps.append(time.time() - debut)
|
|
|
|
|
return [sum(temps[i:i+5])/5 for i in range(0, len(temps), 5)] # Moyenne
|
|
|
|
|
|
|
|
|
|
tailles = [100, 500, 1000, 5000, 10000]
|
|
|
|
|
temps_tri_bulles = mesure_temps_execution(triBulles, tailles)
|
|
|
|
|
temps_tri_insertion = mesure_temps_execution(triInsertion, tailles)
|
|
|
|
|
temps_tri_fusion = mesure_temps_execution(triFusion, tailles)
|
|
|
|
|
|
|
|
|
|
plt.plot(tailles, temps_tri_bulles, label='Tri à bulles', marker='o')
|
|
|
|
|
plt.plot(tailles, temps_tri_insertion, label='Tri par insertion', marker='o')
|
|
|
|
|
plt.plot(tailles, temps_tri_fusion, label='Tri fusion', marker='o')
|
|
|
|
|
|
|
|
|
|
plt.plot(tailles, temps_tri_bulles, label='Tri à bulles')
|
|
|
|
|
plt.xlabel('Taille des données')
|
|
|
|
|
plt.ylabel('Temps d\'exécution (s)')
|
|
|
|
|
plt.title('Temps d\'exécution du tri à bulles')
|
|
|
|
|
plt.xlabel('Taille des données\n(Tableaux d\'entiers (int) aléatoires)')
|
|
|
|
|
plt.ylabel('Temps d\'exécution (secondes)')
|
|
|
|
|
plt.title('Temps d\'exécution des algorithmes de tri')
|
|
|
|
|
plt.legend()
|
|
|
|
|
plt.grid()
|
|
|
|
|
plt.show()
|
|
|
|
|
|
|
|
|
|
cProfile.run('triBulles([random.randint(1, 1000) for _ in range(10000)])')
|
|
|
|
|
cProfile.run('triBulles([random.randint(1, 1000) for _ in range(10000)])') # Profileur de Python
|
|
|
|
|
# Il permet de mesurer de façon précise le temps d'exécution de chaque fonction et ligne.
|