Adloun

NSI (première) · Chapitre 7 · Exercice de TD

Instrumenter le tri par insertion pour compter ses comparaisons, et…

Parcourir, trier, prouver · Variants, terminaison, mesure · niveau 2

Énoncé

Instrumenter le tri par insertion pour compter ses comparaisons, et mesurer les trois cas — trié, aléatoire, trié à l'envers — sur des tailles doublantes. Les rapports confirment-ils les lois du cours ?

Corrigé


def tri_insertion_compte(t):
    """Comme tri_insertion, mais rend (comparaisons, décalages)."""
    comp = 0
    dec = 0
    for i in range(1, len(t)):
        x = t[i]
        j = i
        while j > 0:
            comp = comp + 1
            if t[j - 1] > x:
                t[j] = t[j - 1]
                j = j - 1
                dec = dec + 1
            else:
                break
        t[j] = x
    return comp, dec
triéaléatoireà l'envers

(colonne « aléatoire » : moyenne sur tirages par taille.)

Les trois rapports, quand double.

casrapports mesurésloi
trié puis linéaire,
aléatoire puis quadratique
à l'envers puis quadratique,

Ce que les mesures confirment, et ce qu'elles ajoutent. Le meilleur cas double quand double, le pire quadruple : ce sont exactement les deux lois du cours. La colonne « à l'envers » vaut exactement , ce qui n'est pas une approximation mais une identité — chaque élément traverse toute la partie triée.

L'ajout, c'est la colonne aléatoire : elle quadruple aussi, donc elle est quadratique, mais elle vaut environ la moitié du pire cas ( contre ). Le tri par insertion sur des données quelconques n'est donc pas « entre le linéaire et le quadratique » : il est quadratique, avec un coefficient deux fois plus petit. Un facteur constant ne change pas la loi — et c'est la première chose que la mesure sur trois tailles permet de trancher.

100 % gratuit

Essaie le suivant avec le tuteur

Faire l'exercice suivant avec le tuteur

Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →