Académique Documents
Professionnel Documents
Culture Documents
Objectif
Cet exercice réalise le tri par insertion d’un tableau d’entiers. Dans le même ordre d’idées,
l’exercice @[Tri bulle et associés] réalise le tri bulle et l’exercice @[Tri par sélection] celui
par sélection.
1
Unisciel algoprog – Tri par insertion [tr05] 2
1 Téléchargements – Utilitaires
Cet exercice utilise les opérations suivantes, toutes définies dans un bon nombre d’exer-
cices de cet espace thématique :
• Fonction saisirNombreElements
• Procédure afficherTri
• Procédure aleatoireTri
• Procédure permuterTab
Elles ont été regroupées dans une bibliothèque.
Définitions PseudoCode
Constante TMAX <- ...
Typedef ITableau = Entier[TMAX]
Soit la procédure permuterTab(t,j,k) qui permute les éléments d’indice j et k d’un ITableau
t. Les indices sont supposés valides.
Remarque
Si la fonction et les procédures n’ont pas été réalisées, il vous est conseillé de la(les)
rédiger dans l’exercice @[Utilitaires Tris et Rangs].
...(suite page suivante)...
Unisciel algoprog – Tri par insertion [tr05] 3
Exemple
(Avec affichage des tableaux successifs)
Nombre d’éléments dans [1..50]? 10
Tableau initial
[ 13 12 6 7 13 18 17 4 18 3 ]
Tri par insertion basique
[ 13|12 6 7 13 18 17 4 18 3 |]
[ 12 13| 6 7 13 18 17 4 18 3 |]
[ 6 12 13| 7 13 18 17 4 18 3 |]
[ 6 7 12 13|13 18 17 4 18 3 |]
[ 6 7 12 13 13|18 17 4 18 3 |]
[ 6 7 12 13 13 18|17 4 18 3 |]
[ 6 7 12 13 13 17 18| 4 18 3 |]
[ 4 6 7 12 13 13 17 18|18 3 |]
[ 4 6 7 12 13 13 17 18 18| 3 |]
[ 3 4 6 7 12 13 13 17 18 18||]
Tableau final
[ 3 4 6 7 12 13 13 17 18 18 ]
Remarque
Le tri par insertion est similaire au tri du joueur de cartes qui insère les cartes une à une
dans son jeu de manière à ce qu’à tout instant le jeu soit trié.
Unisciel algoprog – Tri par insertion [tr05] 4
Écrivez une procédure insererElementBasique(t,k) qui insère l’élément t[k] dans le sous-
tableau trié t[1..k-1], t étant un ITableau. La procédure utilisera la procédure permuterTab
pour réaliser l’échange de deux éléments de t.
Écrivez une procédure triInsertionBasique(t,n) qui effectue le tri par insertion de n élé-
ments d’un Tableau t.
Principe de la sentinelle
Afin d’éviter le débordement vers la gauche lors de l’insertion de l’élément t[k] dans
le sous-tableau trié t[1..k-1], une autre solution est de mettre une sentinelle en t[1],
c.-à-d. un élément dont on est certain qu’il va arrêter la boucle. Il suffit pour cela qu’il
soit inférieur à tout élément rencontré, ce qui est le cas si l’on recherche au préalable
l’élément minimum et qu’on le met à cette place.
Écrivez une fonction indiceMinTab(t,n) qui calcule et renvoie l’indice de l’élément conte-
nant la plus petite valeur parmi les n premières valeurs d’un ITableau t. En cas d’ex-aequo,
c’est l’indice le plus petit qui sera renvoyé.
Modifiez votre algorithme afin qu’il effectue le tri par insertion (version 2).