From 77a37e7ffb308e66987ec019ab562a9204511c28 Mon Sep 17 00:00:00 2001 From: Geoffrey Frogeye Date: Thu, 12 Mar 2015 19:58:53 +0100 Subject: [PATCH] Dans le pire des cas --- S2/TP4/analyse_tris.py | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/S2/TP4/analyse_tris.py b/S2/TP4/analyse_tris.py index 64f5be2..2fdd5b7 100644 --- a/S2/TP4/analyse_tris.py +++ b/S2/TP4/analyse_tris.py @@ -202,7 +202,7 @@ def tri_et_compte(trieur, l): global compteur compteur = 0 - ltrie = trieur(l[:]) # On fait une copie l + ltrie = trieur(l[:]) # On fait une copie l return (ltrie, compteur) @@ -263,11 +263,12 @@ print("Le meilleur des cas est lorsque la liste est déjà triée.") question(2) +print("Résultat théorique établi : c_{tri-insert}(n)=n-1") tableau = [['i', 'coût comtpé', 'coût théor.', 'fidèle']] tousFideles = True for nb in range(1, 101): c_compte = tri_et_compte(tri_insertion, liste_croissante(nb))[1] - c_theor = nb-1 + c_theor = nb - 1 fidele = c_compte == c_theor if not fidele: tousFideles = False @@ -280,8 +281,24 @@ section("Dans le pire des cas") question(1) +print("Le pire des cas est lorsque la liste est triée dans l'ordre inverse.") + question(2) +print("Résultat théorique établi : c_{tri-insert}(n)=n(n-1)/2") +tableau = [tableau[0]] +tousFideles = True +for nb in range(1, 101): + c_compte = tri_et_compte(tri_insertion, liste_decroissante(nb))[1] + c_theor = nb * (nb - 1) // 2 + fidele = c_compte == c_theor + if not fidele: + tousFideles = False + tableau.append([nb, c_compte, c_theor, fidele]) +afficher_tableau(tableau) +print("Les résultats comptés {} tous fidèles aux résultats théoriques." + .format("sont" if tousFideles else "ne sont pas")) + section("En moyenne") question(1)