Algorithmique

Fermé
Anna - 21 févr. 2016 à 23:13
 Anna - 22 févr. 2016 à 12:07
Bonsoir,

Aidez moi SVP !

J'ai trouvée cet exercice avec la correction mais j'arrive pas à comprendre une partie de correction :

Exercice:

Écrire une procédure récursive indirecte nommé Tri_Bulle qui permet de trier un tableau T de n entiers. Utiliser les deux procédures ci-dessous :
 Procédure Permuter (var x, y : entier)
 Procédure Parcours (i,n : entiers ; var rep : Booléen, var T : TAB)
Remarque : rep est utilisée pour renvoyé s’il y’a eu une permutation au cours du parcours du tableau.

Correction :


Procédure Permuter(var x, y : Entier) Var
Aux : Entier
Début
aux=x
x=y
y=aux
Fin

Procédure Parcours(i,n :Entier ; var rep : Booléen ; var T :TAB)

Début
Si i<n Alors
Si T[i] >T[i+1] Alors
Permuter(T[i],T[i+1])
rep = Vrai
Fin Si
Fin Si
Fin

Procédure TriBulle(n : Entier ;Perm : Booléen var T :TAB) Var
Perm : Booléen
Début

Si ((n>1) ET (Perm = vrai)) Alors
Perm = Faux
Parcours (1,n, Perm ,T)
TriBulle (n-1, Perm ,T)
Fin SiFin

j'ai pas compris la dernière procédure TriBulle :
pourquoi Perm reçoit faux et TriBulle(n-1, Perm, T) ?

Merci en avance

1 réponse

VlkPr3s Messages postés 235 Date d'inscription vendredi 30 mai 2014 Statut Membre Dernière intervention 27 juin 2016 130
22 févr. 2016 à 09:07
Bonjour Anna,

à mon sens, la valeur faux de ton Perm, qui doit être en gros un diminutif de permuter, doit permettre d'éviter de permuter deux fois le même élément.

En effet, une fois un élément permuter on met la valeur booléenne à false pour éviter de la permuter à nouveau.

En ce qui concerne les paramètres présents dans ta fonction Tri-bulle, tu fais appel a elle même afin de trier les éléments deux fois.

en gros une valeur mise en troisième position peut se retrouver en première grâce à cette fonction récursive.

0
Merci beaucoup VlkPr3s
0