Uploaded by fc bar

algorithme tribulle

advertisement
algorithme tribulle
Variables
t est un tableau [1..10] d'en�ers
i,j,x sont des en�ers
test est un booleen
Debut
pour i:= 1 a 10 faire
lire (t[i])
fin pour
repeter
test:=faux
pour i:=1 a 9 faire
si t[i] > t[i+1] alors
x:=t[i]
t[i]:=t[i+1]
t[i+1]:=x
test:=vrai
fin si
fin pour
jusqu'a test = faux
pour i:=1 a 10 faire
ecrire(t[i])
fin pour
fin.
explica�on de l'algorithme:
Cet algorithme est une implémenta�on du tri à bulles, qui consiste à répéter plusieurs fois le parcours
d'un tableau en comparant les éléments voisins et en les échangeant s'ils sont mal placés.
Voici un exemple de fonc�onnement de l'algorithme avec un tableau de 5 en�ers :
Soit le tableau T = [7, 2, 9, 1, 6]
Première itéra�on : on compare chaque élément avec son voisin de droite et on échange les
éléments mal placés. On ob�ent le tableau T = [2, 7, 1, 6,9]. Comme il y a eu au moins un échange, on
doit répéter l'opéra�on.
Deuxième itéra�on : on compare chaque élément avec son voisin de droite et on échange les
éléments mal placés. On ob�ent le tableau T = [2, 1, 6, 7, 9]. Comme il y a eu au moins un échange,
on doit répéter l'opéra�on.
Troisième itéra�on : on compare chaque élément avec son voisin de droite et on échange les
éléments mal placés. On ob�ent le tableau T = [1, 2, 6, 7, 9]. Comme il n'y a pas eu d'échange cete
fois-ci, le tableau est trié.
Le tableau final trié est donc T = [1, 2, 6, 7, 9].
Notez que l'algorithme parcourt le tableau plusieurs fois tant qu'il y a des échanges à effectuer,
jusqu'à ce que le tableau soit trié dans l'ordre croissant.
--------------------------------------------------------------------------------------------------------------------------------------
explique moi le role de la boucle repeter avec un exemple svp!
le reponse:
Prenons l'exemple suivant pour illustrer le rôle de la boucle "repeter...jusqu'a test = faux" :
Soit le tableau T = [6, 2, 8, 4, 7].
Première itéra�on : L'algorithme parcourt le tableau et compare chaque élément avec son voisin
de droite et échange les éléments mal placés si nécessaire. Après cete première itéra�on, le tableau
est modifié et devient T = [2, 6, 4, 7, 8]. La variable "test" est mise à "vrai" car des échanges ont été
effectués. L'algorithme doit donc répéter l'opéra�on.
Deuxième itéra�on : L'algorithme parcourt à nouveau le tableau modifié et effectue les échanges
nécessaires. Le tableau devient T = [2, 4, 6, 7, 8]. La variable "test" est à nouveau mise à "vrai" car des
échanges ont été effectués. L'algorithme doit encore répéter l'opéra�on.
Troisième itéra�on : L'algorithme parcourt le tableau modifié et effectue les échanges nécessaires.
Le tableau devient T = [2, 4, 6, 7, 8]. Cete fois-ci, aucun échange n'a été effectué pendant la boucle
"pour i:=1 a 9 faire" et la variable "test" reste à "faux". Cela signifie que le tableau est trié et
l'algorithme peut s'arrêter.
En résumé, la boucle "repeter...jusqu'a test = faux" permet de répéter les opéra�ons de parcours et
d'échanges jusqu'à ce que le tableau soit trié. L'algorithme con�nue à répéter cete boucle jusqu'à ce
qu'aucun échange ne soit effectué lors d'une itéra�on, ce qui signifie que le tableau est trié et que
l'algorithme peut s'arrêter.
j'ai pas compris pourquoi pour i:=1 a 9 faire
La boucle "pour i:=1 a 9 faire" parcourt les éléments du tableau à trier, du premier élément
(index 1) jusqu'au neuvième élément (index 9).
Pour chaque élément i, l'algorithme compare sa valeur avec celle de son voisin de droite
(élément i+1). Si l'élément i est plus grand que l'élément i+1, alors les deux éléments sont
échangés.
Il n'est pas nécessaire de comparer le dernier élément (index 10) avec son voisin de droite car
il n'y a pas de voisin de droite pour le dernier élément. C'est pourquoi la boucle s'arrête à 9
(i.e. "pour i:=1 a 9 faire") et non pas à 10.
Download