Un cap pour ce chapitre
Ce que vous saurez faire
- Exécuter les décalages et l’insertion.
- Justifier la conservation et l’ordre des valeurs.
- Comparer meilleur et pire cas.
Les bases utiles pour commencer
Agrandir une partie déjà triée
La première valeur forme à elle seule une partie triée. Au passage i = 1, on insère la deuxième dans cette partie. Au passage suivant, on insère la troisième dans les deux précédentes, et ainsi de suite. Pour [5, 2, 4, 1], les états successifs sont [2, 5, 4, 1], [2, 4, 5, 1] puis [1, 2, 4, 5].
Contrairement à la sélection, le préfixe trié ne contient pas nécessairement les plus petites valeurs du tableau entier. Après le premier passage, 1 reste à droite. Le préfixe rassemble les valeurs initialement rencontrées, mais dans le bon ordre.
Sauvegarder avant de décaler
La valeur à insérer doit être conservée dans une variable avant tout déplacement. On compare ensuite les éléments du préfixe en remontant depuis sa fin. Tant qu’ils sont strictement plus grands, on les décale d’une case vers la droite. Quand on atteint une valeur plus petite ou égale, ou le début du tableau, on place la valeur sauvegardée dans l’espace disponible.
Il faut tester que l’indice reste valide avant de lire la case. En Python, les indices négatifs désignent des cases depuis la fin ; ils ne signalent pas automatiquement l’erreur logique qu’un dépassement à gauche pourrait provoquer.
def tri_insertion(t):
for i in range(1, len(t)):
valeur = t[i]
j = i - 1
while j >= 0 and t[j] > valeur:
t[j + 1] = t[j]
j = j - 1
t[j + 1] = valeurPendant les décalages, le tableau peut provisoirement contenir deux copies d’une même valeur. Ce n’est pas une perte de donnée si la valeur à insérer est conservée ailleurs. L’ensemble « tableau plus variable sauvegardée plus emplacement libre » représente l’état réel du raisonnement. Regardez donc aussi les variables temporaires, et pas seulement la photographie intermédiaire du tableau.
Construire la preuve avec le préfixe
Au début du passage i, les i premières cases sont triées et contiennent les valeurs initiales de ce préfixe. Les décalages laissent entre elles les valeurs supérieures dans le même ordre. L’insertion place la valeur courante après les valeurs inférieures ou égales et avant les valeurs supérieures. Le préfixe de longueur i + 1 est donc trié.
La sauvegarde permet de conserver chaque valeur malgré les copies temporaires. Pour la terminaison de la boucle interne, l’indice j diminue à chaque décalage et ne peut pas rester indéfiniment positif. La boucle externe est bornée par la taille du tableau.
L’ordre initial change le travail
Dans un tableau déjà trié, chaque nouvelle valeur est immédiatement à la bonne place : une comparaison de valeurs suffit par passage et aucun décalage n’est nécessaire. Dans un tableau strictement décroissant, chaque valeur doit passer devant toutes les précédentes. Il y a alors 1 + 2 + … + (n - 1) décalages, soit n(n - 1) / 2.
Le pire coût est quadratique, mais le meilleur cas est linéaire pour cette version. L’atelier compte les comparaisons entre valeurs et les décalages séparément ; les tests d’indice ne figurent pas dans ce compteur. Cette convention doit rester identique lorsque l’on compare deux exemples.
Pour [2,5,8,4], la dernière insertion compare 8 à 4, puis 5 à 4, puis 2 à 4. Deux comparaisons déclenchent un décalage ; la troisième arrête la remontée. Le nombre de comparaisons peut donc dépasser celui des décalages. En revanche, quand la remontée atteint le bord gauche, l’arrêt peut être déterminé par l’indice sans dernière comparaison entre valeurs.
Exemple suivi : ouvrir une place sans perdre la clé
Insérons 3 dans le préfixe [1,4,6], suivi de 3. On sauvegarde d’abord valeur=3. Copier 6 vers la droite donne provisoirement [1,4,6,6]. Copier 4 donne [1,4,4,6]. La comparaison avec 1 arrête la boucle ; écrire la sauvegarde dans la case libre produit [1,3,4,6].
Le chemin des indices est aussi important : on commence à 2, on passe à 1 puis à 0, et on insère à j+1=1. L’algorithme ne perd pas 3 puisque la variable le conserve. Pour une valeur plus petite que toutes les précédentes, les indices vont jusqu’à -1 puis l’insertion se fait à 0. Le test de validité doit précéder l’accès à la case, en particulier dans Python où un indice négatif peut donner une valeur valide mais indésirable.
Doublons, stabilité et jeu de tests
Approfondissement : avec un décalage uniquement lorsque la clé précédente est strictement supérieure, les clés égales gardent leur ordre relatif. Sur [(2,A),(2,B),(1,C)], A ne se déplace pas devant B lors de l’insertion de B. L’insertion de C décale ensuite B puis A, mais leur ordre relatif final reste A puis B. On appelle stable un tri possédant cette propriété.
Pour vérifier la version numérique, prenez un tableau vide, un singleton, une suite croissante, une suite décroissante et des répétitions. Le vide et le singleton ne nécessitent aucune insertion. La suite croissante vérifie l’arrêt immédiat des boucles internes ; la décroissante force le passage jusqu’au bord gauche. Les répétitions vérifient que le test strict ne décale pas inutilement les égaux. Un unique tableau mélangé ne met pas nécessairement en évidence toutes ces branches.
À vous de faire varier les choses
Observez les cartes qui se décalent
Comparez un tableau croissant, décroissant ou presque trié. Avancez les insertions et observez les deux compteurs.
Lire le résultat de l’expérience initiale
Après 1 insertion(s) : [2, 5, 4, 1]
Le préfixe est trié, mais des valeurs plus petites peuvent encore être présentes à droite. Les tests d’indice ne sont pas comptés.
| Valeur insérée | Position finale | Tableau |
|---|---|---|
| 2 | 0 | 2, 5, 4, 1 |
Le nombre de décalages révèle à quel point chaque nouvelle valeur était éloignée de sa place.
De la compréhension à l’autonomie
À vous de résoudre
Cherchez d’abord par vous-même. Vérifiez les résultats demandés, utilisez les indices si nécessaire, puis comparez votre méthode à la correction.
Une insertion complète
Le préfixe [2, 5, 8] est trié et la valeur suivante est 4. Donnez les décalages puis le préfixe obtenu.
Indice 1
Sauvegardez 4 avant de toucher au tableau.
Indice 2
Seules les valeurs strictement supérieures à 4 sont déplacées.
Comprendre la correction
On décale 8 puis 5 vers la droite. La valeur 2 est inférieure à 4 et arrête la remontée. On insère 4 après 2 : le préfixe devient [2, 4, 5, 8]. Deux décalages ont lieu, mais trois comparaisons de valeurs sont nécessaires pour constater l’arrêt sur 2.
Déjà trié
Combien de décalages et de comparaisons entre valeurs faut-il pour trier [1, 3, 6, 9] avec le code donné ?
Indice 1
Il y a trois passages.
Indice 2
À chaque passage, la première comparaison est fausse.
Comprendre la correction
Il faut zéro décalage et trois comparaisons entre valeurs. Les valeurs sont déjà ordonnées, mais l’algorithme doit le constater à chaque insertion. Ce meilleur cas est linéaire ; il ne permet pas d’affirmer que le tri sera aussi rapide pour tout tableau.
Une valeur écrasée
Un élève commence à décaler t[i - 1] dans t[i] avant de sauvegarder t[i]. Pourquoi son tri peut-il perdre une donnée ?
Indice 1
La case t[i] contenait la nouvelle valeur.
Indice 2
Une copie n’offre pas de sauvegarde automatique de l’ancien contenu.
Comprendre la correction
La valeur à insérer est écrasée par la copie du voisin. Il peut alors rester deux occurrences du voisin et aucune de la valeur initiale. On sauvegarde d’abord valeur = t[i], puis on réalise les décalages et enfin l’insertion de cette sauvegarde.
Comparer deux invariants
Après un passage d’insertion, le préfixe contient-il toujours les plus petites valeurs du tableau entier ? Donnez un contre-exemple.
Indice 1
Considérez [5, 2, 4, 1].
Indice 2
Observez l’état après la première insertion.
Comprendre la correction
Non : après la première insertion, le préfixe [2, 5] est trié mais la valeur 1 reste à droite. L’invariant porte sur les valeurs déjà rencontrées. Dire qu’il contient les plus petites de tout le tableau confondrait l’insertion avec la sélection.
Compter une insertion à trois comparaisons
Le tableau est [1,4,6,3]. Décrivez les états temporaires de la dernière insertion, sa position finale et le nombre de comparaisons de valeurs de cette insertion seulement.
Indice 1
La sauvegarde vaut 3 pendant les copies.
Indice 2
La comparaison finale avec 1 est comptée même sans décalage.
Comprendre la correction
Les états temporaires sont [1,4,6,6] puis [1,4,4,6]. La sauvegarde 3 est écrite à l’indice 1, donnant [1,3,4,6]. On compare 6, 4 puis 1 à 3 : trois comparaisons et deux décalages. Les insertions précédentes ne sont pas incluses dans ce compteur.
Les deux extrêmes du coût
Comparez le tri complet de [1,2,3,4,5] et [5,4,3,2,1]. Donnez décalages et comparaisons de valeurs selon le code du cours. Pourquoi le nombre d’insertions reste-t-il le même ?
Indice 1
Il y a quatre valeurs à insérer dans chaque tableau.
Indice 2
Dans la version décroissante, chaque insertion remonte jusqu’à l’indice 0.
Comprendre la correction
Le tableau croissant demande quatre comparaisons et zéro décalage. Le décroissant demande 1+2+3+4=10 comparaisons et dix décalages : chaque comparaison entraîne une copie, puis le test d’indice arrête la remontée. Il y a quatre insertions dans les deux cas, mais leur travail interne diffère.
Comparer insertion et sélection
Sur [3,5,1,4], donnez l’état après le premier passage de sélection et après la première insertion. Dans chaque cas, expliquez ce qui est garanti sur le préfixe et ce qui reste à faire.
Indice 1
La sélection cherche le minimum du tableau entier au premier passage.
Indice 2
L’insertion ne considère d’abord que les deux premières valeurs.
Comprendre la correction
La sélection donne [1,5,3,4] : 1 est définitivement la plus petite valeur. L’insertion laisse [3,5,1,4] : le préfixe 3,5 est trié mais 1 reste à traiter. La sélection garantit les plus petites valeurs en place ; l’insertion garantit seulement l’ordre des valeurs déjà rencontrées.
Les erreurs qui méritent un détour
- Placer la sauvegarde en
t[j]au lieu det[j + 1]. - La boucle s’arrête sur la case précédente ou
j = -1. L’emplacement libre se trouve une case plus loin. - Oublier la conservation des valeurs dans la preuve.
- Des copies temporaires existent pendant les décalages. La variable sauvegardée permet de reconstituer le préfixe sans perte.
La fiche à garder
L’essentiel à retenir
- On sauvegarde, on décale, puis on insère.
- Le préfixe trié contient les valeurs déjà rencontrées.
- Le pire cas est quadratique, le meilleur linéaire.
Cette notion au bac
Retrouvez ces idées dans un sujet complet, avec des indices, une correction expliquée et des ateliers.
- Bac 2026 · Amérique du Nord · Jour 2 : Tennis : objets, tri et arbre du tournoi
- Bac 2025 · Centres étrangers groupe 1 · Jour 2 : Dictionnaire de mots : hachage, insertion ordonnée et dichotomie
- Bac 2025 · Amérique du Nord · Jour 2 bis - Sujet PE2 : Construire et utiliser un arbre de compression de Huffman
Le prochain pas
Retrouver le catalogue de Première
Ce chapitre s’appuie sur le programme officiel de Première (PDF, nouvel onglet). Les explications et exercices sont proposés pour l’apprentissage.
