Adloun

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

On appelle inversion d'un tableau un couple d'indices avec et

Parcourir, trier, prouver · Les deux tris, leurs invariants, leur coût · niveau 3 (difficile)

Énoncé

On appelle inversion d'un tableau un couple d'indices avec et . Montrer que le nombre de décalages du tri par insertion est exactement le nombre d'inversions, et en déduire un encadrement du nombre de comparaisons.

Corrigé


def inversions(t):
    """Nombre de couples (i, j), i < j, avec t[i] > t[j]. Coût quadratique."""
    n = 0
    for i in range(len(t)):
        for j in range(i + 1, len(t)):
            if t[i] > t[j]:
                n = n + 1
    return n

La démonstration. Le tri par insertion ne fait qu'une seule chose qui modifie l'ordre : décaler d'un cran vers la droite un élément t[j-1] strictement plus grand que la carte x qui vient de sa droite. Ce décalage fait donc passer x devant t[j-1] : il supprime exactement une inversion, celle du couple . Il n'en crée aucune autre — les éléments décalés gardent leur ordre relatif. Comme le tableau final, trié, n'a aucune inversion, le nombre total de décalages vaut le nombre d'inversions du tableau initial.

La vérification. Sur tableaux tirés au hasard, avec doublons :


assert decalages == inversions(t)

cas passent. Trois exemples lisibles :

tableauinversionsdécalagescomparaisons
[5, 2, 8, 1]
[1, 2, 3, 4]
[4, 3, 2, 1]

L'encadrement des comparaisons. Chaque décalage est précédé d'une comparaison réussie ; et chaque tour de la boucle externe se termine par au plus une comparaison ratée — celle qui arrête la boucle interne. D'où

Vérifié sur tableaux : aucune assertion ne se déclenche. Sur [1, 2, 3, 4] : , borne haute atteinte. Sur [4, 3, 2, 1] : , borne basse atteinte.

Ce que ce résultat explique. « Le tri par insertion est rapide sur des données presque triées » n'est plus une impression, c'est un théorème : son coût est proportionnel au désordre, mesuré par le nombre d'inversions. Un tableau à éléments et inversions se trie en opérations environ — linéaire si est petit, quadratique seulement si approche son maximum .

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 →