Tri par insertion
Première NSI > Chapitre 10.
Algorithme de tri : définition
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Exemple.
>>> tab = [27, 5, 9, 18, 11, 8] |
On part d’un tableau non-trié.
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Exemple.
>>> tab = [27, 5, 9, 18, 11, 8] >>> |
Le tableau est maintenant stocké en mémoire.
| | | | | |
0 | 1 | 2 | 3 | 4 | 5 |
27 | 5 | 9 | 18 | 11 | 8 |
| | | | | |
tab |
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Exemple.
>>> tab = [27, 5, 9, 18, 11, 8] >>> tri(tab) |
On peut ensuite lui appliquer une fonction de tri.
| | | | | |
0 | 1 | 2 | 3 | 4 | 5 |
27 | 5 | 9 | 18 | 11 | 8 |
| | | | | |
tab |
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Exemple.
>>> tab = [27, 5, 9, 18, 11, 8] >>> tri(tab) >>> |
Le tableau est maintenant trié dans l’ordre croissant !
| | | | | |
0 | 1 | 2 | 3 | 4 | 5 |
5 | 8 | 9 | 11 | 18 | 27 |
| | | | | |
tab |
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Exemple.
>>> tab = [27, 5, 9, 18, 11, 8] >>> tri(tab) >>> |
Remarque. Le prompt est réapparu directement sans affichage de résultat renvoyé.
| | | | | |
0 | 1 | 2 | 3 | 4 | 5 |
5 | 8 | 9 | 11 | 18 | 27 |
| | | | | |
tab |
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Exemple.
>>> tab = [27, 5, 9, 18, 11, 8] >>> tri(tab) >>> |
Cela veut dire que la fonction tri ne renvoie rien : c’est bien une fonction mutateur.
Remarque. Le prompt est réapparu directement sans affichage de résultat renvoyé.
| | | | | |
0 | 1 | 2 | 3 | 4 | 5 |
5 | 8 | 9 | 11 | 18 | 27 |
| | | | | |
tab |
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Exemple.
>>> tab = [27, 5, 9, 18, 11, 8] >>> tri(tab) >>> |
| | | | | |
0 | 1 | 2 | 3 | 4 | 5 |
5 | 8 | 9 | 11 | 18 | 27 |
| | | | | |
tab |
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Exemple.
>>> tab = [27, 5, 9, 18, 11, 8] >>> tri(tab) >>> tab |
On peut maintenant interroger le contenu mémoire associé à tab.
| | | | | |
0 | 1 | 2 | 3 | 4 | 5 |
5 | 8 | 9 | 11 | 18 | 27 |
| | | | | |
tab |
Définition. Un algorithme de tri :
Remarque. Un tel algorithme qui modifie une structure de données stockée en mémoire comme un tableau sans renvoyer d’information particulière est appelé “mutateur”.
Exemple.
>>> tab = [27, 5, 9, 18, 11, 8] >>> tri(tab) >>> tab [5, 8, 9, 11, 18, 27] >>> |
| | | | | |
0 | 1 | 2 | 3 | 4 | 5 |
5 | 8 | 9 | 11 | 18 | 27 |
| | | | | |
tab |
On a confirmation que le tableau est bien trié.
Algorithme de tri par insertion
Sommaire. Tri par insertion
Préambule
Pour découvrir par vous-même le principe du tri par insertion, cliquer sur les liens ci-dessous pour accéder à deux animations. Observer les animations avec attention.
Sommaire. Tri par insertion
Sommaire. Tri par insertion
| | | | | | | | | |
| | | | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Pour comprendre, prenons l'algorithme en cours sur un exemple de tableau.
| | | | | | | | | |
| | | | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
La zone déjà triée apparaît en rouge.
| | | | | | | | | |
| | | | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
À cette étape, on doit insérer 21 dans la zone déjà triée.
| | | | | | | | 21 | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
À quelle position doit-on insérer 21 ?
| | | | | | | | 21 | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Ces éléments sont tous plus grands que 21.
| | | | | | | | 21 | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
On peut donc les décaler vers la droite.
| | | | 21 | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | | 22 | 32 | 92 | 94 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
La position d’insertion apparaît alors.
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
La position d’insertion apparaît alors.
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
La zone déjà triée a augmenté d’une case.
| | | | | | | | | |
| | | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Pour comprendre, prenons l'algorithme en cours sur le même tableau mais à une autre étape.
| | | | | | | | | |
| | | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
La zone déjà triée apparaît en rouge.
| | | | | | | | | |
| | | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
À cette étape, on doit insérer 15 dans la zone déjà triée.
À quelle position doit-on insérer 15 ?
| | | | 15 | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | 15 | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Tous les éléments avant 15 sont tous plus grands que lui.
| | | | 15 | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
On peut donc les décaler vers la droite.
| | 15 | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
La position d’insertion apparaît alors dans ce cas en début de tableau.
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
La position d’insertion apparaît alors dans ce cas en début de tableau.
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
zone déjà triée a augmenté d’une case.
Observons maintenant l’algorithme en entier.
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Observons maintenant l’algorithme en entier.
| | | | | | | | | |
| | ⬇ | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | ⬇ | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Le 1er élément n’étant pas déplaçable à gauche, on ne
fait rien.
| | | | | | | | | |
| | | ⬇ | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | 22 | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | 22 | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | 22 | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | 15 | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | 15 | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | 15 | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | 32 | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | 32 | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | 32 | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | 10 | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | 10 | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | 10 | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | ⬇ | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | ⬇ | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Déjà bien placé !
| | | | | | | | | |
| | | | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | 21 | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | 21 | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | 21 | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | | 22 | 32 | 92 | 94 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | 70 |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | 70 |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | 70 | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | | 92 | 94 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Exercice.
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | i |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 0 |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 1 |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 2 |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 3 |
| | | | | | | | | |
| | | | | | | | | 4 |
| | | | | | | | | |
| | | | | | | | | 5 |
| | | | | | | | | |
| | | | | | | | | 6 |
| | | | | | | | | |
| | | | | | | | | 7 |
| | | | | | | | | |
10 | 11 | 15 | 17 | 18 | 19 | 23 | 25 | | |
Exercice. (Correction)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | i |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 0 |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 1 |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 2 |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 3 |
| | | | | | | | | |
15 | 17 | 19 | 23 | 11 | 25 | 18 | 10 | | 4 |
| | | | | | | | | |
11 | 15 | 17 | 19 | 23 | 25 | 18 | 10 | | 5 |
| | | | | | | | | |
11 | 15 | 17 | 19 | 23 | 25 | 18 | 10 | | 6 |
| | | | | | | | | |
| | | | | | | | | 7 |
| | | | | | | | | |
10 | 11 | 15 | 17 | 18 | 19 | 23 | 25 | | |
Exercice. (Correction)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | i |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 0 |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 1 |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 2 |
| | | | | | | | | |
15 | 19 | 23 | 17 | 11 | 25 | 18 | 10 | | 3 |
| | | | | | | | | |
15 | 17 | 19 | 23 | 11 | 25 | 18 | 10 | | 4 |
| | | | | | | | | |
11 | 15 | 17 | 19 | 23 | 25 | 18 | 10 | | 5 |
| | | | | | | | | |
11 | 15 | 17 | 19 | 23 | 25 | 18 | 10 | | 6 |
| | | | | | | | | |
11 | 15 | 17 | 18 | 19 | 23 | 25 | 10 | | 7 |
| | | | | | | | | |
10 | 11 | 15 | 17 | 18 | 19 | 23 | 25 | | |
Sommaire. Tri par insertion
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Algorithme du tri par insertion
On part d’un tableau non-trié.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
| | i | | | | | | | |
| | ⬇ | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | i | | | | | | | |
| | ⬇ | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | i | | | | | | | |
| | ⬇ | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 92 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | i | | | | | | | |
| | ⬇ | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 92 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comme on est au début du tableau, il n’y a pas d’éléments précédents !
| j | i | | | | | | | |
| ⬇ | ⬇ | | | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 92 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
On ne fait donc rien et on passe à l’étape suivante !
| | | i | | | | | | |
| | | ⬇ | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | i | | | | | | |
| | | ⬇ | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | i | | | | | | |
| | ⬇ | ⬇ | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
92 est le 1er élément précédent à décaler.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | i | | | | | | |
| | ⬇ | ⬇ | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
92 est plus grand que la clé donc on le décale en faisant une copie à droite.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | i | | | | | | |
| | ⬇ | ⬇ | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
92 est plus grand que la clé donc on le décale en faisant une copie à droite.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | i | | | | | | |
| | ⬇ | ⬇ | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Noter que le 22 a été perdu. Heureusement 22 a été mémorisé dans la clé !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | i | | | | | | |
| | ⬇ | ⬇ | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Maintenant
92 est en double !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | i | | | | | | |
| | ⬇ | ⬇ | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Maintenant que 92 a été copié à droite, son occurrence initiale est devenue inutile.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | i | | | | | | |
| ⬇ | | ⬇ | | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Cette case est donc libérée pour une insertion !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | i | | | | | | |
| ⬇ | | ⬇ | | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Comme on est au début du tableau, il n’y a plus d’éléments précédents !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | i | | | | | | |
| ⬇ | | ⬇ | | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 22 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
On arrête donc les décalages à cette étape : on a trouvé la position d’insertion !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | i | | | | | | |
| ⬇ | | ⬇ | | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 22 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
On peut maintenant insérer la clé dans la case libérée !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | i | | | | | | |
| ⬇ | | ⬇ | | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 22 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
On peut maintenant insérer la clé dans la case libérée !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | i | | | | | | |
| ⬇ | | ⬇ | | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 22 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
À la fin de l’étape, le tableau a retrouvé l’ensemble des éléments qu’il contenait au départ.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | i | | | | | | |
| ⬇ | | ⬇ | | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 22 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Passons à l’étape suivante !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | i | | | | | |
| | | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Passons à l’étape suivante !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | i | | | | | |
| | | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 15 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | i | | | | | |
| | | ⬇ | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 15 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
92 est le 1er élément précédent à décaler.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | i | | | | | |
| | | ⬇ | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 15 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
92 est plus grand que la clé donc on le décale en faisant une copie à droite.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | | i | | | | | |
| | ⬇ | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 15 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
92 est plus grand que la clé donc on le décale en faisant une copie à droite.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | | i | | | | | |
| | ⬇ | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 15 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Faut-il insérer la clé ici ?
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | | i | | | | | |
| | ⬇ | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 15 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Non car 15 serait mal placé !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | | i | | | | | |
| | ⬇ | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 15 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
En effet, il reste un élément précédent plus grand que 15.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | | i | | | | | |
| | ⬇ | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 15 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
On fait donc un décalage supplémentaire.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | | i | | | | | |
| | ⬇ | | ⬇ | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 92 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 15 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
On fait donc un décalage supplémentaire.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | i | | | | | |
| ⬇ | | | ⬇ | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 15 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
On fait donc un décalage supplémentaire.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | i | | | | | |
| ⬇ | | | ⬇ | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 15 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Comme on est au début du tableau, il n’y a plus d’éléments précédents !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | i | | | | | |
| ⬇ | | | ⬇ | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 15 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
On arrête donc les décalages à cette étape : on a trouvé la position d’insertion !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | i | | | | | |
| ⬇ | | | ⬇ | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 15 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
On peut maintenant insérer la clé dans la case libérée !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | i | | | | | |
| ⬇ | | | ⬇ | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 22 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 15 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
On peut maintenant insérer la clé dans la case libérée !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | i | | | | | |
| ⬇ | | | ⬇ | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 15 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
On peut maintenant insérer la clé dans la case libérée !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | i | | | | | |
| ⬇ | | | ⬇ | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 15 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
À la fin de l’étape, le tableau a retrouvé l’ensemble des éléments qu’il contenait au départ.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | i | | | | | |
| ⬇ | | | ⬇ | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 15 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Noter que l’on voit grandir progressivement la zone triée du tableau.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | i | | | | | |
| ⬇ | | | ⬇ | | | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 15 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Passons à l’étape suivante !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | i | | | | |
| | | | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Passons à l’étape suivante !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | i | | | | |
| | | | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | 32 | | | | |
| | | | | ⭡ | | | | |
| | | | | cle | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | j | i | | | | |
| | | | ⬇ | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | 32 | | | | |
| | | | | ⭡ | | | | |
| | | | | cle | | | | |
92 est le 1er élément précédent à décaler.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | j | i | | | | |
| | | | ⬇ | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | 32 | | | | |
| | | | | ⭡ | | | | |
| | | | | cle | | | | |
92 est plus grand que la clé donc on le décale en faisant une copie à droite.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | i | | | | |
| | | ⬇ | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | 32 | | | | |
| | | | | ⭡ | | | | |
| | | | | cle | | | | |
92 est plus grand que la clé donc on le décale en faisant une copie à droite.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | i | | | | |
| | | ⬇ | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 32 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
Faut-il insérer la clé ici ?
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | i | | | | |
| | | ⬇ | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 32 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
Oui car l’élément précédent est cette fois plus petit que la clé : 22 <= 32.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | i | | | | |
| | | ⬇ | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 32 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
On arrête donc les décalages à cette étape : on a trouvé la position d’insertion !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | i | | | | |
| | | ⬇ | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 92 | 92 | 10 | 94 | 21 | 70 |
| | | | ⭡ | | | | | |
| | | | 32 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
On peut maintenant insérer la clé dans la case libérée !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | i | | | | |
| | | ⬇ | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | ⭡ | | | | | |
| | | | 32 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
On peut maintenant insérer la clé dans la case libérée !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | i | | | | |
| | | ⬇ | | ⬇ | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 32 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
Passons à l’étape suivante !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | | i | | | |
| | | | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Passons à l’étape suivante !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | | i | | | |
| | | | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
On suit les mêmes étapes.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | | i | | | |
| | | | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | 10 | | | |
| | | | | | ⭡ | | | |
| | | | | | cle | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | j | i | | | |
| | | | | ⬇ | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | 10 | | | |
| | | | | | ⭡ | | | |
| | | | | | cle | | | |
92 > 10
On décale !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | j | | i | | | |
| | | | ⬇ | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | 10 | | | | |
| | | | | ⭡ | | | | |
| | | | | cle | | | | |
92 > 10
On décale !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | j | | i | | | |
| | | | ⬇ | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | 10 | | | | |
| | | | | ⭡ | | | | |
| | | | | cle | | | | |
32 > 10
On décale !
| | | j | | | i | | | |
| | | ⬇ | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 10 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
32 > 10
On décale !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | | i | | | |
| | | ⬇ | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | 10 | | | | | |
| | | | ⭡ | | | | | |
| | | | cle | | | | | |
22 > 10
On décale !
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | j | | | | i | | | |
| | ⬇ | | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 10 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
22 > 10
On décale !
| | j | | | | i | | | |
| | ⬇ | | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | 10 | | | | | | |
| | | ⭡ | | | | | | |
| | | cle | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
15 > 10
On décale !
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
15 > 10
On décale !
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comme on est au début du tableau, il n’y a plus d’éléments précédents !
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
On arrête donc les décalages à cette étape : on a trouvé la position d’insertion !
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Dans ce cas, quel critère met fin à la recherche de la position d’insertion ?
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Dans ce cas, quel critère met fin à la recherche de la position d’insertion ?
j devient strictement négatif.
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Dans ce cas, quel critère met fin à la recherche de la position d’insertion ?
Donc la recherche doit continuer tant que …
j devient strictement négatif.
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Dans ce cas, quel critère met fin de la recherche de la position d’insertion ?
Donc la recherche doit continuer tant que :
j >= 0
j devient strictement négatif.
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Passons à l’étape suivante !
| | | | | | | i | | |
| | | | | | | ⬇ | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Passons à l’étape suivante !
| | | | | | | i | | |
| | | | | | | ⬇ | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | 94 | | |
| | ⭡ | | | | | ⭡ | | |
| | cle | | | | | cle | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | | j | i | | |
| | | | | | ⬇ | ⬇ | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | 94 | | |
| | ⭡ | | | | | ⭡ | | |
| | cle | | | | | cle | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
92 <= 94
Pas de décalage à cette étape !
| | | | | | | | i | |
| | | | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Passons à l’étape suivante !
| | | | | | | | i | |
| | | | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | 21 | |
| | ⭡ | | | | | | ⭡ | |
| | cle | | | | | | cle | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | | | j | i | |
| | | | | | | ⬇ | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | 21 | |
| | ⭡ | | | | | | ⭡ | |
| | cle | | | | | | cle | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
94 > 21
On décale !
| | | | | | j | | i | |
| | | | | | ⬇ | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | 21 | | |
| | ⭡ | | | | | ⭡ | | |
| | cle | | | | | cle | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
94 > 21
On décale !
| | | | | | j | | i | |
| | | | | | ⬇ | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | 21 | | |
| | ⭡ | | | | | ⭡ | | |
| | cle | | | | | cle | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
92 > 21
On décale !
| | | | | j | | | i | |
| | | | | ⬇ | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | 21 | | | |
| | ⭡ | | | | ⭡ | | | |
| | cle | | | | cle | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
92 > 21
On décale !
| | | | | j | | | i | |
| | | | | ⬇ | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | 21 | | | |
| | ⭡ | | | | ⭡ | | | |
| | cle | | | | cle | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
32 > 21
On décale !
| | | | j | | | | i | |
| | | | ⬇ | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | 21 | | | | |
| | ⭡ | | | ⭡ | | | | |
| | cle | | | cle | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
32 > 21
On décale !
| | | | j | | | | i | |
| | | | ⬇ | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | 21 | | | | |
| | ⭡ | | | ⭡ | | | | |
| | cle | | | cle | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
22 > 21
On décale !
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
15 <= 21
Donc on arrête les décalages !
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Dans ce cas, quel critère met fin à la recherche de la position d’insertion ?
15 <= 21
Donc on arrête les décalages !
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
tab[...] <= ...
Dans ce cas, quel critère met fin à la recherche de la position d’insertion ?
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
tab[j] <= cle
Dans ce cas, quel critère met fin à la recherche de la position d’insertion ?
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
tab[j] <= cle
Dans ce cas, quel critère met fin à la recherche de la position d’insertion ?
Donc la recherche doit continuer tant que :
...
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
tab[j] <= cle
Dans ce cas, quel critère met fin à la recherche de la position d’insertion ?
Donc la recherche doit continuer tant que :
tab[j] > cle
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | ⭡ | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Terminons l’étape !
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | ⭡ | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Terminons l’étape !
| | | | | | | | | i |
| | | | | | | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Passons à la dernière étape!
| | | | | | | | | i |
| | | | | | | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | 70 |
| | ⭡ | | | | | | | ⭡ |
| | cle | | | | | | | cle |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | | | | j | i |
| | | | | | | | ⬇ | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | 70 |
| | ⭡ | | | | | | | ⭡ |
| | cle | | | | | | | cle |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
94 > 70
On décale !
| | | | | | | j | | i |
| | | | | | | ⬇ | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | 70 | |
| | ⭡ | | | | | | ⭡ | |
| | cle | | | | | | cle | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
94 > 70
On décale !
| | | | | | | j | | i |
| | | | | | | ⬇ | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 94 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | 70 | |
| | ⭡ | | | | | | ⭡ | |
| | cle | | | | | | cle | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
92 > 70
On décale !
| | | | | | j | | | i |
| | | | | | ⬇ | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | 70 | | |
| | ⭡ | | | | | ⭡ | | |
| | cle | | | | | cle | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
92 > 70
On décale !
| | | | | | j | | | i |
| | | | | | ⬇ | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | 70 | | |
| | ⭡ | | | | | ⭡ | | |
| | cle | | | | | cle | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
32 <= 70
On arrête les décalages !
| | | | | | j | | | i |
| | | | | | ⬇ | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 92 | 92 | 94 |
| | ⭡ | | | | | ⭡ | | |
| | 10 | | | | | 70 | | |
| | ⭡ | | | | | ⭡ | | |
| | cle | | | | | cle | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | | j | | | i |
| | | | | | ⬇ | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | ⭡ | | | | | ⭡ | | |
| | 10 | | | | | 70 | | |
| | ⭡ | | | | | ⭡ | | |
| | cle | | | | | cle | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | | | | | | | i |
| | | | | | | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Algorithme terminé : tableau trié !
Sommaire. Tri par insertion
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): ... |
| |
| | i | | | | | | | |
| | ⬇ | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | 92 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): ... |
| |
| | i | | | | | | | |
| | ⬇ | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Que faut-il écrire ici ?
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): ... |
| |
| | i | | | | | | | |
| | ⬇ | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 92 | 22 | 15 | 32 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Que faut-il écrire ici ?
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
État initial
| | | | | | | | | i |
| | | | | | | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): ... |
| |
Que faut-il écrire ici ?
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
État final
| | | | | | | | | i |
| | | | | | | | | ⬇ |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
État final
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Que faut-il écrire ici ?
| | | | | | i | | | |
| | | | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | 10 | | | |
| | | | | | ⭡ | | | |
| | | | | | cle | | | |
Exemple de début d’étape
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Que faut-il écrire ici ?
| | | | | | i | | | |
| | | | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | 10 | | | |
| | | | | | ⭡ | | | |
| | | | | | cle | | | |
Exemple de début d’étape
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Que faut-il écrire ici ?
| | | | | | i | | | |
| | | | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | 10 | | | |
| | | | | | ⭡ | | | |
| | | | | | cle | | | |
Exemple de début d’étape
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = ... while ...: ... j = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Que faut-il écrire ici ?
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = ... while ...: ... j = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Commençons par l’initialisation de j.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = ... while ...: ... j = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Commençons par l’initialisation de j.
| | | | | j | i | | | |
| | | | | ⬇ | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 92 | 10 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | 10 | | | |
| | | | | | ⭡ | | | |
| | | | | | cle | | | |
Début de boucle while (exemple 1)
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = ... while ...: ... j = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Commençons par l’initialisation de j.
| | | | | | | j | i | |
| | | | | | | ⬇ | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | 21 | |
| | ⭡ | | | | | | ⭡ | |
| | cle | | | | | | cle | |
Début de boucle while (exemple 2)
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... j = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Commençons par l’initialisation de j.
| | | | | | | j | i | |
| | | | | | | ⬇ | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | 21 | |
| | ⭡ | | | | | | ⭡ | |
| | cle | | | | | | cle | |
Début de boucle while (exemple 2)
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... j = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comment varie j d’une itération à l’autre ?
Exemple.
| | | | | | | j | i | |
| | | | | | | ⬇ | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | 21 | |
| | ⭡ | | | | | | ⭡ | |
| | cle | | | | | | cle | |
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... j = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comment varie j d’une itération à l’autre ?
Exemple.
| | | | | | j | | i | |
| | | | | | ⬇ | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 94 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | | 21 | | |
| | ⭡ | | | | | ⭡ | | |
| | cle | | | | | cle | | |
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... j = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comment varie j d’une itération à l’autre ?
Exemple.
| | | | | j | | | i | |
| | | | | ⬇ | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 92 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | | 21 | | | |
| | ⭡ | | | | ⭡ | | | |
| | cle | | | | cle | | | |
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... j = ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comment varie j d’une itération à l’autre ?
Exemple.
| | | | j | | | | i | |
| | | | ⬇ | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | 21 | | | | |
| | ⭡ | | | ⭡ | | | | |
| | cle | | | cle | | | | |
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... j = j - 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comment varie j d’une itération à l’autre ?
Exemple.
| | | | j | | | | i | |
| | | | ⬇ | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | 21 | | | | |
| | ⭡ | | | ⭡ | | | | |
| | cle | | | cle | | | | |
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comment varie j d’une itération à l’autre ?
Exemple.
| | | | j | | | | i | |
| | | | ⬇ | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 32 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | | 21 | | | | |
| | ⭡ | | | ⭡ | | | | |
| | cle | | | cle | | | | |
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... = ... j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Quelle affectation
permet de réaliser un décalage (copie vers la droite)
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... = ... j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Quelle affectation
permet de réaliser un décalage (copie vers la droite)
| | | j | | | i | | | |
| | | ⬇ | | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Exemple.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: ... = ... j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Quelle affectation
permet de réaliser un décalage (copie vers la droite)
| | | j | j+1 | | i | | | |
| | | ⬇ | ⬇ | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Exemple.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: tab[...] = tab[...] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Quelle affectation
permet de réaliser un décalage (copie vers la droite)
| | | j | j+1 | | i | | | |
| | | ⬇ | ⬇ | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Exemple.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Quelle affectation
permet de réaliser un décalage (copie vers la droite)
| | | j | j+1 | | i | | | |
| | | ⬇ | ⬇ | | ⬇ | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 22 | 32 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
| | | | | | | | | |
Exemple.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Quel(s) critère(s) indiquent que la position d’insertion n’a pas encore été trouvée ?
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Exemple 1. Pourquoi la recherche a-t-elle pris fin à cette étape ?
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Exemple 1. Pourquoi la recherche a-t-elle pris fin à cette étape ?
car tab[...] <= ...
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Exemple 1. Pourquoi la recherche a-t-elle pris fin à cette étape ?
car tab[j] <= cle
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while ...: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Le critère de continuation est donc le contraire.
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Exemple 1. Pourquoi la recherche a-t-elle pris fin à cette étape ?
car tab[j] <= cle
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Le critère de continuation est donc le contraire.
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Exemple 1. Pourquoi la recherche a-t-elle pris fin à cette étape ?
car tab[j] <= cle
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | | | | i | |
| | | ⬇ | | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Exemple 1. Pourquoi la recherche a-t-elle pris fin à cette étape ?
car tab[j] <= cle
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Exemple 2. Pourquoi la recherche a-t-elle pris fin à cette étape ?
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Exemple 2. Pourquoi la recherche a-t-elle pris fin à cette étape ?
j < ...
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Exemple 2. Pourquoi la recherche a-t-elle pris fin à cette étape ?
j < 0
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle ... ...: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Le critère de continuation est donc le contraire.
Exemple 2. Pourquoi la recherche a-t-elle pris fin à cette étape ?
j < 0
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle ... j >= 0: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Le critère de continuation est donc le contraire.
Exemple 2. Pourquoi la recherche a-t-elle pris fin à cette étape ?
j < 0
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle ... j >= 0: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Quel opérateur logique doit-on utiliser ?
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle ... j >= 0: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Pour autoriser un décalage les deux conditions doivent être vraies.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle and j >= 0: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Pour autoriser un décalage les deux conditions doivent être vraies.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle and j >= 0: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
L’expression booléenne est-elle bien construite ?
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle and j >= 0: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
L’expression booléenne est-elle bien construite ?
Non, on risque une erreur d’accès au tableau. Le rang doit d’abord être validé !
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle and j >= 0: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
L’expression booléenne est-elle bien construite ?
Que faut-il faire ?
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while tab[j] > cle and j >= 0: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
L’expression booléenne est-elle bien construite ?
On change l’ordre des conditions !
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | | | | | i | | | |
| ⬇ | | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
L’expression booléenne est-elle bien construite ?
On change l’ordre des conditions !
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Il ne reste plus que la dernière étape
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | | | | | i | |
| | | ⬇ | ⬇ | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Exemple 1.
Comment obtient-on la position d’insertion ?
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comment obtient-on la position d’insertion ?
| j | | | | | i | | | |
| ⬇ | ⬇ | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Exemple 2.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| | | j | j+1 | | | | i | |
| | | ⬇ | ⬇ | | | | ⬇ | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 22 | 22 | 32 | 92 | 94 | 70 |
| | ⭡ | | | | | | | |
| | 10 | | 21 | | | | | |
| | ⭡ | | ⭡ | | | | | |
| | cle | | cle | | | | | |
Exemple 1.
Comment obtient-on la position d’insertion ?
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
Comment obtient-on la position d’insertion ?
| j | j+1 | | | | i | | | |
| ⬇ | ⬇ | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Exemple 2.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| j | j+1 | | | | i | | | |
| ⬇ | ⬇ | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Exemple 2.
En déduire la dernière ligne !
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 ... |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
En déduire la dernière ligne !
| j | j+1 | | | | i | | | |
| ⬇ | ⬇ | | | | ⬇ | | | |
| -1 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 15 | 15 | 22 | 32 | 92 | 94 | 21 | 70 |
| | | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Exemple 2.
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 tab[j + 1] = cle |
| |
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 tab[j + 1] = cle |
| |
Noter les deux boucles imbriquées.
Algorithme du tri par insertion
On parcourt le tableau de gauche à droite.
Pour chaque étape :
| |
1 2 3 4 5 6 7 8 | def tri_insertion(tab): for i in range(len(tab)): cle = tab[i] j = i - 1 while j >= 0 and tab[j] > cle: tab[j + 1] = tab[j] j -= 1 tab[j + 1] = cle |
| |
Quelle complexité peut-on conjecturer ?
Sommaire. Tri par insertion
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
D’après-vous quel est le meilleur des cas ?
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
D’après-vous quel est le meilleur des cas ?
LE TABLEAU EST DÉJÀ TRIÉ !
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
D’après-vous quel est le meilleur des cas ?
LE TABLEAU EST DÉJÀ TRIÉ !
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Combien d’étapes peut-on prévoir ?
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
D’après-vous quel est le meilleur des cas ?
LE TABLEAU EST DÉJÀ TRIÉ !
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Il n’y aura aucun décalage. Donc il y aura autant d’étapes que de cases dans le tableau
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
D’après-vous quel est le meilleur des cas ?
LE TABLEAU EST DÉJÀ TRIÉ !
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Quelle est donc la complexité dans ce cas ?
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
D’après-vous quel est le meilleur des cas ?
LE TABLEAU EST DÉJÀ TRIÉ !
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Quelle est donc la complexité dans ce cas ?
complexité LINÉAIRE
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
D’après-vous quel est le pire des cas ?
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
D’après-vous quel est le pire des cas ?
LE TABLEAUX EST TRIÉ DANS L’ORDRE DÉCROISSANT.
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 94 | 92 | 70 | 32 | 22 | 21 | 15 | 10 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
D’après-vous quel est le pire des cas ?
LE TABLEAUX EST TRIÉ DANS L’ORDRE DÉCROISSANT.
| | | | | | | | | |
| | | | | | | | | |
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
tab | | 94 | 92 | 70 | 32 | 22 | 21 | 15 | 10 |
| | ⭡ | | | | | | | |
| | 10 | | | | | | | |
| | ⭡ | | | | | | | |
| | cle | | | | | | | |
Quelle est donc la complexité dans ce cas ?
Contrairement au tri par sélection, le tri par insertion a un nombre d’étapes qui varie selon que le tableau est déjà trié en partie ou non.
Chaque case doit être décalée au début du tableau.
1 étape | | 94 | 92 | 70 | 32 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
2 étapes | | 92 | 94 | 70 | 32 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
3 étapes | | 70 | 92 | 94 | 32 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
4 étapes | | 32 | 70 | 92 | 94 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
5 étapes | | 22 | 32 | 70 | 92 | 94 | 21 | 15 | 10 |
| | | | | | | | | |
6 étapes | | 21 | 22 | 32 | 70 | 92 | 94 | 15 | 10 |
| | | | | | | | | |
7 étapes | | 15 | 21 | 22 | 32 | 70 | 92 | 94 | 10 |
| | | | | | | | | |
8 étapes | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | | | | | | | | |
1 étape | | 94 | 92 | 70 | 32 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
2 étapes | | 92 | 94 | 70 | 32 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
3 étapes | | 70 | 92 | 94 | 32 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
4 étapes | | 32 | 70 | 92 | 94 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
5 étapes | | 22 | 32 | 70 | 92 | 94 | 21 | 15 | 10 |
| | | | | | | | | |
6 étapes | | 21 | 22 | 32 | 70 | 92 | 94 | 15 | 10 |
| | | | | | | | | |
7 étapes | | 15 | 21 | 22 | 32 | 70 | 92 | 94 | 10 |
| | | | | | | | | |
8 étapes | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | | | | | | | | |
On retrouve le nombre d’étapes du tri par sélection.
Quelle est donc la complexité dans ce cas ?
1 étape | | 94 | 92 | 70 | 32 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
2 étapes | | 92 | 94 | 70 | 32 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
3 étapes | | 70 | 92 | 94 | 32 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
4 étapes | | 32 | 70 | 92 | 94 | 22 | 21 | 15 | 10 |
| | | | | | | | | |
5 étapes | | 22 | 32 | 70 | 92 | 94 | 21 | 15 | 10 |
| | | | | | | | | |
6 étapes | | 21 | 22 | 32 | 70 | 92 | 94 | 15 | 10 |
| | | | | | | | | |
7 étapes | | 15 | 21 | 22 | 32 | 70 | 92 | 94 | 10 |
| | | | | | | | | |
8 étapes | | 10 | 15 | 21 | 22 | 32 | 70 | 92 | 94 |
| | | | | | | | | |
On retrouve le nombre d’étapes du tri par sélection.
Quelle est donc la complexité dans ce cas ?
complexité QUADRATIQUE
Comparaison des complexités (dans le pire des cas)
Algorithme | Recherche dichotomique | Recherche linéaire | Tri par sélection Tri par insertion |
Complexité | Logarithmique | Linéaire | Quadratique |
Notation | O(log(n)) | O(n) | O(n2) |
Nombre d’étapes | log2(n) | n | 0,5n2 + 0,5n |
10 | 4 | 10 | 55 |
100 | 7 | 100 | 5050 |
1000 | 10 | 1000 | 500500 |
Un million | 20 | 106 | 5 · 1011 |
Un milliard | 30 | 109 | 5 · 1017 |
Taille n du tableau