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 :
| tableau | inversions | décalages | comparaisons |
|---|---|---|---|
[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
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
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.