Correction du TD n°5 et du TD n°6

Exercice 1

Une fonction pour rechercher l'indice de la valeur minimum d'un sous-tableau d'un tableau.

001 fonction indiceDuMinimum(t,ideb,ifin):entier
002 Données t : Tableau [N] de entier { Tableau ou rechercher }
003 ideb : entier { Indice a partir duquel commencer a chercher }
004 ifin : entier { Indice jusqu'auquel effectuer la recherche }
005 Locales ind : entier
006 i : entier
007 ind := ideb
008 pour i de ideb+1 à ifin faire
009 si t[i] < t[ind] alors
010 ind := i
011 fsi
012 fait
013 Resultat : ind
014 fin fonction

Une action pour effectuer le tri par sélection.

001 action triSelection(t)
002 Données-Résultats t : Tableau [N] de entier { Tableau a trier }
003 Locales deb : entier { Indice de boucle pour }
004 imin : entier { Indice de valeur minimale }
005 v : entier { Variable auxiliaire de permutation }
006 pour deb de 0 à N-2 faire
007 imin := indiceDuMinimum(t,deb,N-1)
008 v := t[deb]
009 t[deb] := t[imin]
010 t[imin] := v
011 fait
012 fin action

Exercice 2

Une action pour effectuer le tri à bulle.

001 action triBulle(t)
002 Données-Résultats t : Tableau [N] de entier { Tableau a trier }
003 Locales stop : booleen { Condition d'arret du tri }
004 ind : entier { Compteur du nombre de valeurs triees }
005 i : entier { Indice de boucle pour }
006 v : entier { Variable auxiliaire pour permutation }
007 stop := faux
008 ind := 0
009 tant que non(stop) faire
010 stop := vrai
011 pour i de 0 à N-2-ind faire
012 si t[i] > t[i+1] alors
013 stop := faux
014 v := t[i]
015 t[i] := t[i+1]
016 t[i+1] := v
017 fsi
018 ind := ind + 1
019 fait
020 fin action

Exercice 3

Une fonction pour rechercher la position d'insertion d'une valeur d'un tableau à la place dans le tableau qui le maintient trié.

001 fonction indiceInsertion(ind,t) : entier
002 Données ind : entier { Indice de la valeur du tableau t pour laquelle }
003 { on recherche la position d'insertion }
004 { entre t[0] et t[ind-1] }
005 t : Tableau [N] de entier { Tableau ou la recherche est effectuée }
006 Locales i : entier { Indice de recherche }
007 i := 0
008 tantque t[i] < t[ind] faire
009 i := i+1
010 fait
011 Résultat : i
012 fin fonction

Une action pour réaliser l'insertion d'une valeur d'un tableau dans ce même tableau.

001 action insertion(pos,t,src)
002 Données pos : entier { Indice ou l'insertion est realisee }
003 Données-Résultats t : Tableau [N] de entier { Tableau ou l'insertion est realisee }
004 Données src : entier { Indice de la valeur de t a inserer }
005 Locales v : entier { Variable auxiliaire de permutation }
006 i : entier { Indice de boucle pour }
007 v := t[src]
008 pour i de src à pos+1 pas -1 faire
009 t[i] := t[i-1]
010 fait
011 t[pos] := v
012 fin action

Une action pour effectuer le tri par insertion.

001 action triInsertion(t)
002 Données-Résultats t : Tableau [N] de entier { Tableau a trier }
003 Locales i : entier { Indice de boucle pour }
004 indice : entier { Indice d'insertion d'une valeur }
005 pour i de 1 à N-1 faire
006 indice := indiceInsertion(i,t)
007 si indice <> i alors
008 insertion(indice,t,i)
009 fsi
010 fait
011 fin action

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