Correction du TD n°8

Exercice 1

Implanter en programmation algorithmique la méthode de tri par insertion appliquée aux tableaux d'entiers.

001 { Recherche de la position d'une valeur }
002 { a l'interieur d'un tableau trie d'entiers }
003
004 fonction indiceInsertion(t,v,imax) : entier
005 Donnees t : tableau [N] de entier { tableau ou chercher }
006 v : entier { valeur de recherche }
007 imax : entier { indice ultime de recherche }
008 Locales i : entier { indice de boucle }
009 i := 0
010 tant que (t[i] < v) et (i <= imax) faire
011 i := i+1
012 Resultat : i
013 fin fonction

IndiceInsertion.lda

001 { Decalage d'une cellule vers la droite }
002 { d'une partie d'un tableau d'entiers }
003
004 action decalage(t,ideb,ifin)
005 Donnees t : tableau [N] de entier { tableau d'entiers a decaler }
006 ideb : entier { indice de debut de decalage }
007 ifin : entier { indice de fin de decalage }
008 Locales i : entier { indice de boucle }
009 pour i de ifin à ideb pas -1 faire
010 t[i+1] = t[i];
011 fait
012 fin action

Decalage.lda

001 { Tri d'un tableau d'entiers par la methode }
002 { de tri par insertion }
003
004 action triInsertion(t)
005 Donnees / Resultat t : tableau [N] de entier { tableau d'entiers a trier }
006 Locales i : entier { indice de boucle }
007 aux : entier { variable auxiliaire }
008 indice : entier { indice d'insertion }
009 pour i de 1 à N-1 faire
010 indice := indiceInsertion(t,t[i],i-1)
011 si indice <> i alors
012 aux := t[i]
013 decalage(t,indice,i-1);
014 t[indice] := aux;
015 fsi
016 fait
017 fin action

TriInsertion.lda

Auteur: Nicolas JANEY
UFR Sciences et Techniques
Université de Besançon
16 Route de Gray, 25030 Besançon
nicolas.janey@univ-fcomte.fr