From e6baa74259cb9cb0bbf3408fd183fc13b9456f2c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ay=C3=A2t=20Chergui?=
 <ayat@Ordinateur-portable-de-Ayat.local>
Date: Thu, 27 Feb 2025 12:27:43 +0100
Subject: [PATCH] fini

---
 TP2_hachage/tp_2_miso_dict.py | 55 +++++++++++++++++++++++++----------
 1 file changed, 40 insertions(+), 15 deletions(-)

diff --git a/TP2_hachage/tp_2_miso_dict.py b/TP2_hachage/tp_2_miso_dict.py
index b4fa921..4fbb51e 100644
--- a/TP2_hachage/tp_2_miso_dict.py
+++ b/TP2_hachage/tp_2_miso_dict.py
@@ -2,6 +2,7 @@ import matplotlib.pyplot as plt
 import numpy as np
 import time
 import sys
+import math
 
 #test modif du push après peripétie
 
@@ -15,24 +16,30 @@ def experiment_load_factor(load_factors): #= load_factor = liste de facteur de c
 	num_resizes = []
 	sizes = []
 
-	 for i in load_factors:
-		dict = {}
+	for i in load_factors:
+		dico = {}
 		num_elements= 0 #nombre d'élement dans table
 		num_resize = 0 #taille dico
-		last_size = sys.getsizeof(dict) #taile dico après insertion
-		start_time = time.time()  # tps avant insertion
+		last_size = sys.getsizeof(dico) #taile dico après insertion
+		insertion_per_factor = []
 
-		while num_elements < load_factors: #remplie table tant que taille attendue par facteur de charge pas atteint
-			dict[num_elements]=num_elements
-			num_elements =+ 1
-			last_size = sys.getsizeof(dict)
-			num_resize =+ 1 #on ajoute 1 élement donc 1 position en +
-		end_time = time.time() #temps fin insertion
-		insertion_times.append(end_time - start_time) #temps totale
+		while num_elements < (i*100): #remplie table tant que taille attendue par facteur de charge pas atteint
+			start_time = time.perf_counter()
+			dico[num_elements]=num_elements
+			end_time = time.perf_counter()
+			insertion_per_factor.append(end_time - start_time) #temps totale
+			num_elements += 1
+			current_size = sys.getsizeof(dico)
+			if current_size > last_size:
+				last_size = current_size
+				num_resize += 1 #on ajoute 1 élement donc 1 position en +
+		
+		insertion_times.append(np.mean(insertion_per_factor))
 		sizes.append(last_size) #on ajoute la nouvelle taille dans la liste
 		num_resizes.append(num_resize) #nouvelle table
-
+		print(insertion_times)
 	return insertion_times, num_resizes, sizes
+	
 
 def experiment_longest():
 	"""
@@ -59,13 +66,31 @@ def visualisation(load_factors, insertion_times, num_resizes, sizes, frequencies
 	Visualisation des résultats
 	"""
 	# Temps d'insertion en fonction du facteur de charge
-
+	plt.figure(figsize=(10, 6))
+	plt.bar(load_factors, insertion_times, width=0.01, label="insertion_time", color='blue')
+	plt.xlabel('load factor')
+	plt.ylabel('Temps d\'inserstion')
+	plt.title('Histogramme du temps des insertions en fonction des facteurs de charge')
+	plt.savefig('histogramme 7A')
 	# Nombre de réallocations de mémoire en fonction du facteur de charge
 	
+	plt.figure(figsize=(10,6))
+	plt.bar(load_factors, num_resizes, width=0.05, label = "num_resize", color='green')
+	plt.xlabel('load factor')
+	plt.ylabel('num resize')
+	plt.title('Histogramme du nombre de reallocations de mémoire en fonction du facteur de charge')
+	plt.savefig('Histogramme 7B')
 	# Taille de mémoire occupée en fonction du nombre d'éléments
-	
+
+	plt.figure(figsize=(10,6))
+	plt.bar(sizes, num_resizes, width=100, color='red', label="Nombre de réallocations")  # Augmente width si valeurs élevées
+	plt.xlabel('size')
+	plt.ylabel('num_resizes')
+	plt.title('Histogramme de la taille de mémoire occupé en fonction du nombre d\'élements')
+	plt.savefig('Histogramme 7C')
+
 	# Deuxième étude
-	f = list()
+	f = list(frequencies)
 	plt.figure(figsize=(10, 6))
 	plt.bar(range(len(f)), f)
 	plt.xlabel('Temps d\'insertion (s)')
-- 
GitLab