From 330254a9181cba3fc300cad387e6e3a3c2090bed Mon Sep 17 00:00:00 2001 From: Ryad MEHIRI Date: Wed, 14 Oct 2026 13:58:49 +0200 Subject: [PATCH] Calculer la moyenne une seule fois dans ecart_type_longueur MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit longueur_moyenne était rappelée à chaque tour de boucle : n appels qui parcourent chacun toute la table, soit 34,4 millions d'appels à longueur pour 5 866 mots (O(n²) → O(n)). Temps : 7,6 s → 5,6 s. Empreinte inchangée (1d53de903efd2b7c). Co-Authored-By: Claude Opus 5.5 --- analyseur.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/analyseur.c b/analyseur.c index 1192fd0..b6471a2 100644 --- a/analyseur.c +++ b/analyseur.c @@ -318,9 +318,10 @@ double longueur_moyenne(const Entree *table, int n) double ecart_type_longueur(const Entree *table, int n) { + double moyenne = longueur_moyenne(table, n); /* calculée une seule fois */ double somme = 0.0; for (int i = 0; i < n; i++) { - double ecart = longueur(table[i].mot) - longueur_moyenne(table, n); + double ecart = longueur(table[i].mot) - moyenne; somme += ecart * ecart; } return somme / n; /* variance ; la racine est prise dans main */