1. Algorithmes de TRI Algorithmique & Programmation
I. Rappels
1) Activité 1 (Tri à bulles)
a) Principe
Le principe de cette méthode de tri consiste à balayer tout le tableau, comparer les éléments consécutifs
et les échanger s'ils ne sont pas dans le bon ordre.
Cette méthode peut se traduire par l’algorithme formel suivant :
Comparer la première paire des éléments,
1- Si T [ 1 ] > T [ 2 ]alors permuter T [ 1 ] et T [ 2 ] et tenir compte de cette action.
2- Aller à la paire suivante et répéter les étapes 1 et 2 jusqu’à comparer la dernière paire.
3- Si une permutation a été réalisée (ou plusieurs) alors répéter ce qu’on vient de faire, sinon le tableau
est trié.
b) Algorithme
0) DEF PROC Tri_bulles( var T :tab ; N : entier)
1) Répéter
echange Faux
Pour i de 1 à N - 1 Faire
Si T [ i ] > T [ i + 1 ] Alors
aux T [ i ]
T[i]T[i+1] PROC Permut (T [ i ], T [ i+1] )
T [ i + 1 ] Aux
echange vrai
Fin Si
Fin Pour
Jusqu’à (echange = Faux)
2) Fin Tri_bulles
2) Activité 2 (Tri par séléction)
a) Principe
Cette méthode peut se traduire par l’algorithme formel suivant :
1- Comparer tous les nombres afin de sélectionner le plus petit (ordre croissant),
2- Échanger le plus petit élément trouvé avec le premier élément,
3- Refaire les étapes 1 et 2 et rechercher le plus petit du tableau sauf le premier puis l’échanger avec le
second.
b) Algorithme
0) DEF PROC Tri_sélection( var T :tab ; N : entier)
1) Pour i de 1 à N - 1 Faire
posmin i
Pour j de i+1 à N Faire Recherche de la position du
Si T [ j ] < T [ posmin ] Alors posmin j
minimum « posmin »
Fin Si
Fin Pour
Si i < > posmin Alors
aux T [ i ]
T [ i ] T [posmin ]
T [posmin ] aux
Fin Si
Fin Pour
2) Fin Tri_selection
Enseignant: Mr SAYARI Page 1 /4 4 S.INFO
2. Algorithmes de TRI Algorithmique & Programmation
3) Activité 3 (Tri par insertion)
a) Principe
C’est une méthode de tri qui consiste à prendre les éléments du tableau un par un puis d’insérer chacun
à sa bonne palace façon que les éléments traités forment une liste triée.
Cette méthode peut se traduire par l’algorithme formel suivant :
1- On commence par le deuxième élément,
2- Comparer l’élément choisis avec tous ses précédents dans le tableau et l’insérer dans sa
bonne place,
3- Répéter l’étape 2 pour l’élément suivant jusqu’à arriver au dernier.
b) Algorithme
0) DEF PROC Tri_insertion ( var T :tab ; N : entier)
1) Pour i de 2 à N Faire
ji
aux T [ i ]
Tant que (j > 1) ET ( T [ j – 1] > aux ) Faire Décalage de tous les éléments
T[j]T[j–1]
supérieurs à aux, «T [ i ]» dans la
jj–1
Fin Tant que liste triée
T [ j ] Aux
Fin Pour
2) Fin Tri_insertion
II. TRI SHELL
a) Principe
- C’est une variante du tri par insertion
- Shell propose une suite définie par : U1=1 et Un+1= 3 * Un +1 pour déterminer la valeur du pas.
- Trie chaque liste d’éléments séparés par p positions chacun avec un tri par insertion.
b) Exemple
T 72 61 44 80 70 85 21 23 51 87 74 94 20 17 56
c) Analyse de la procédure TRI_SHELL
Résultat= T
2) T= [ ] Tant que p>0 faire
P p div 3
Pour i de p à n faire
Aux T[i]
Ji
Tant que (j>p-1) et (T[j-p]>aux) Faire
T[j] T[j-p]
J j-p
Fin Tant que
T[j] aux
Fin pour
Fin Tant que
1) P=[p0 ] Tant que p<n Faire
P 3*p+1
Fin Tant que
Enseignant: Mr SAYARI Page 2 /4 4 S.INFO
3. Algorithmes de TRI Algorithmique & Programmation
d) Algorithme
0) DEF PROC TRI_SHELL (var T : tab ; n : entier)
1) P 0
Tant que p<n Faire
P 3*p+1
Fin Tant que
2) Tant que p>0 faire
P p div 3
Pour i de p à n faire
Aux T[i]
Ji
Tant que (j>p-1) et (T[j-p]>aux) Faire
T[j] T[j-p]
J j-p
Fin Tant que
T[j] aux
Fin pour
Fin Tant que
3) Fin TRI_SHELL
III. Application : TRI PAR FUSION
a) principe
- Le tri fusion est construit suivant la stratégie "diviser pour régner".
- Le principe de base de la stratégie "diviser pour régner" est que pour résoudre un gros problème, il est
souvent plus facile de le diviser en petits problèmes élémentaires. Une fois chaque petit problème
résolu, il n’y a plus qu’à combiner les différentes solutions pour résoudre le problème global.
- La méthode "diviser pour régner" est tout à fait applicable au problème de tri : plutôt que de trier le
tableau complet, il est préférable de trier deux sous tableaux de taille égale, puis de fusionner les
résultats.
- L’algorithme de tri par fusion à développer est récursif, En effet, les deux sous tableaux seront eux
même triés à l’aide de l’algorithme de tri fusion. Un tableau ne comportant qu’un seul élément sera
considéré comme trié.
- Etapes de l’algorithme :
Division de l’ensemble de valeurs en deux parties
Tri de chacun des deux ensembles
Fusion des deux ensembles
b) Analyse de la procédure Tri_fusion
DEF PROC TRI_FUSION (var T : tab ; d,f : entier)
Résultat= TRI_FUSION
TRI_FUSION= [ ] SI (d<f) Alors
Mil (d+f) div 2
proc tri_fusion (t,d,mil)
proc tri_Fusion(t,mil+1,f)
proc fusionner(t,d,mil,f)
Fin Si
Enseignant: Mr SAYARI Page 3 /4 4 S.INFO
4. Algorithmes de TRI Algorithmique & Programmation
c) Analyse de la procédure Fusionner
DEF PROC FUSIONNER (var T :tab ; d,mil,f :entier)
Résultat= T
T= [ ] pour i de d à f faire
T[i] V[i]
Fn pour
V= [i d , j mil+1 ] pour k de d à f faire
Si (i<=mil) et (t[i] < t[j]) ou (j>f) alors
V[k] T[i]
i i+1
Sinon
V[k] T[j]
j j+1
Fin si
Fin pour
Enseignant: Mr SAYARI Page 4 /4 4 S.INFO