Vous êtes sur la page 1sur 6

Classe 

: 4ème Sciences de l’informatique Module : Les algorithmes de tri

LES ALGORITHMES DE TRI


I. Introduction
Les tableaux permettent de stocker plusieurs éléments de même type au sein d'une seule
entité. Lorsque le type de ces éléments possède un ordre total, on peut donc les ranger en ordre
croissant ou décroissant.
II. Tri par sélection
1. Présentation :
Le tri par sélection (tri par extraction) consiste à ce que la recherche soit du plus petit
élément (ou le plus grand) que l'on va replacer à sa position finale c'est-à-dire en première position
(ou en dernière), puis on recherche le second plus petit élément (ou le second plus grand) et ainsi
de suite jusqu'à ce que le tableau soit entièrement trié.
2. Procédure de tri par sélection
Procédure Tri_Selection (@ T: TAB ;, N: ENTIER)
Début
Pour i de 0 à N-2 Faire
Min  i
Pour j de i+1 à N-1 Faire
Si (T[j] < T[Min] ) Alors
T.D.O.L
Min  j
Fin Si Objet Type / Nature
Fin Pour I, Min, j,
Entier
Aux
Si ( Min ≠ i ) Alors
Aux  T[i]
T[i]  T[Min]
T[Min]  Aux
Fin Si
Fin Pour
Fin

III. Tri à bulle


1. Présentation :
Le tri à bulle ou tri par propagation est un algorithme de tri très critiqué à cause de sa
lenteur d'exécution. Il consiste à faire remonter le plus grand élément du tableau (comme une bulle
d'air remonte à la surface) en comparant les éléments successifs.
2. Procédure de tri à bulle
Procédure Tri_Bulle (@ T: TAB , N: ENTIER) T.D.O.L
Début Objet Type / Nature
Répéter i, Aux Entier
PermuteFaux Permute Booléen
Pour i de 0 à N-2 Faire
Si (T[i]>T[i+1]) Alors
AuxT[i]
T[i] T[i+1]
T[i+1] Aux
Permute Vrai
Fin Si
Fin Pour
NN-1

2
Classe : 4ème Sciences de l’informatique Module : Les algorithmes de tri

Jusqu’à (Permute=Faux) ou (N=1)


Fin

IV. Tri par insertion


IV.1. Présentation:
Le tri par insertion considère chaque élément du tableau et l'insère à la bonne place parmi
les éléments déjà triés.
Ainsi, au moment où on considère un élément, les éléments qui le précèdent sont déjà triés,
tandis que les éléments qui le suivent ne sont pas encore triés.
Pour trouver la place où insérer un élément parmi les précédents, il faut le comparer à ces
derniers, et les décaler afin de libérer une place où effectuer l'insertion. Le décalage occupe la place
laissée libre par l'élément considéré. En pratique, ces deux actions s'effectuent en une passe, qui
consiste à faire « remonter » l'élément au fur et à mesure jusqu'à rencontrer un élément plus petit.

IV.2. Procédure de tri par insertion


Procédure Tri_Insertion (@ T: TAB, N: ENTIER)
Début
Pour i de à N Faire
T.D.O.L
K  T[i]
Objet Type / Nature
j i
Tantque (j>1) et (T[j -1] > K) Faire i, k, j Entier
T[j]  T[j -1]
j  j-1
Fin Tantque
T[j]  k
Fin Pour
0) Fin TRI_INSERTION

V. Tri shell
V.1. Présentation :
C'est une variante du tri par insertion. Dans ce tri, les éléments sont décalés de plusieurs éléments. La
distance qui les sépare est appelée "pas". A chaque étape le tableau est affiné (mieux organisé) et le pas
réduit. Lorsque le pas est de 1, cela revient à un tri par insertion.
Le choix du « PAS » ne doit pas s'effectuer n'importe comment. En effet, les valeurs des différents pas
successifs ne doivent pas, pour des raisons de plus grande efficacité, être multiples des autres et il faut
absolument réaliser l'étape ou le pas est égal à un. La formule la plus couramment utilisée pour calculer la
valeur des pas successifs est la suivante
Un+1=3Un+1 avec U0=0

Soit N le nombre d'éléments du tableau et P le pas (le pas doit être tel que p<n). Certains algorithmes
imposent la taille des pas successifs, qui sont, par exemple, écrits en dur au sein du programme.
L'inconvénient est que le nombre de valeurs à trier peut être bien supérieur au plus grand pas prévu par la
personne ayant implémenté l'algorithme. La version qui est proposée ici préfère calculer, à l'aide de la
formule donnée ci-dessus, le plus grand pas P tel que P<N. Pour trouver les autres valeurs successives de p,
il suffit, à chaque étape, de diviser P par 3 (division entière).
Exemple:
Grandeurs successives de P pour N=100, calcul du plus grande valeur de p tel que p<100 :

U0=0
U1=3U0+1=1
U2=3U1+1=4
U3=3U2+1=13
U4=3U3+1=40

2
Classe : 4ème Sciences de l’informatique Module : Les algorithmes de tri

U5=3U4+1=121
Conclusion: La plus grande valeur de P tel que p<100 est 40. Les valeurs successives du pas P seront alors :
(ou la division par 3 est une division entière).

P1= 121/3= 40
P2= P1/3= 40/3=13
P3= P2/3= 13/3=4
P4= P3/3= 4/3=1

V.2. Procédure de tri shell

0) DEF PROC TRI_SHELL (VAR T: TAB ; N: ENTIER)

1) Tantque (p < n) Faire


p3*p+1
Fin Tantque

2) Tantque (p  1) Faire p  p div 3 T.D.O.L


Objet Type / Nature
Pour i de p+1 à n Faire p, i, K, j Entier
K  T[i]
j i
Tantque (j>p) et (T[j -p] > K]) Faire
T[j]  T[j-p]
jj-p
Fin Tantque
T[j]  K
Fin Pour
Fin Tantque
1) Fin TRI_SHELL

VI. Tri par fusion


VI. Présentation :
Le tri fusion est construit suivant la stratégie « Diviser pour régner ». Le principe de base 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.
VI.2. Procédure de tri par fusion (non récursive)

2
Classe : 4ème Sciences de l’informatique Module : Les algorithmes de tri

0) DEF PROC TRI_FUSION (T1, T2: TAB ; N1, N2: ENTIER ; VAR T : TAB) T.D.O.L
1) C0, C11, C21 Type /
Répéter Objet
Nature
CC+1 C Entier
Si (T1 [C1]< T2[C2])Alors C1 Entier
T[C] T1 [C1] C2 Entier
C1C1 +1
Sinon
T[C] T2 [C2]
C2C2 +1
Fin si
Jusqu’à ((C1>N1) OU (C2>N2))
2) Si (C1 > N1) Alors
Pour i de C2 à N2 Faire
CC+1 T[C] T2 [i]
Fin pour
Sinon
Pour i de C1 à N1 Faire
CC+1 T[C] T1 [i]
Fin pour
3) Fin TRI_FUSION

Remarque : Un algorithme de tri par fusion récursif est très pratique. En effet, les deux sous
tableaux seront eux même triés à l'aide de même algorithme de tri fusion. Un tableau ne
comportant qu'un seul élément sera considéré comme trié : c'est la condition de fin du tri (arrêt).

VII. Algorithme de tri : Tri rapide (Quick Sort) :


1. Principe :
C’est un algorithme classique de tri, considéré comme l'un des plus rapides, des plus
simples et des plus efficaces. C’est un « Tri par segmentation » basée sur la méthode de
conception « diviser pour régner », appelé aussi « Tri de Hoare » (du nom de son inventeur).

2. Une Solution
L’idée de l’algorithme est très simple. Etant donné un vecteur d’éléments à trier :
1. Choisir un élément arbitraire du tableau, que nous appelons élément pivot.
2. Réorganiser les éléments du tableau de sorte que tous les éléments inférieurs au pivot
soient à gauche du pivot, les éléments supérieurs au pivot soient à droite du pivot,
ceux qui sont égaux soit à gauche soit à droite et le pivot choisi entre les deux. Cette
opération s’appelle partition.
3. Trier récursivement la partie gauche et la partie droite du tableau jusqu’à obtenir
uniquement des sous tableaux à un seul élément.

3. Comment choisir le pivot ?


Nous pouvons choisir comme pivot l’élément situé au milieu de la partie à trier. Comme
on peut choisir le premier élément.

4. Comment réaliser une partition ?


 On considère que le pivot est le premier élément du tableau que l’on cherche à le
mettre à sa bonne place définitivement.
1 I=2 3 4 5 6 7 8 9 J=10

2
Classe : 4ème Sciences de l’informatique Module : Les algorithmes de tri

Pivot
T 6 8 13 19 2 1 31 3 11
10

 On fait un balayage par la gauche à partir du deuxième élément (I=2), on ne touche


pas à un élément si sa valeur est inférieure au pivot. On arrête ce balayage dès que l’on
trouve un élément dont la valeur est plus grande que celle du pivot que l’on appelle
G.
 On passe à un balayage par la droite en partant du dernier élément du tableau (J=10).
On ne touche pas à un élément si sa valeur est supérieure au pivot. On arrête ce
balayage dès que l’on trouve un élément dont la valeur est plus petite que celle du
pivot que l’on appelle P.
 On procède à l’échange des deux éléments G et P mal placés dans chacun des sous
listes.

1 2 3 I=4 5 6 7 8 J=9 10
Pivot
T 6 8 13 19 2 1 31 3 11
10
G P
 On contenue le balayage par la gauche et le balayage par la droite tant que les
éléments sont bien placés en échangeant à chaque fois les éléments mal placés.

1 2 3 4 I=5 6 J=7 8 9 10
Pivot
T 6 8 3 19 2 1 31 13 11
10
G P
 La construction des deux sous listes est terminée quand l’indice (i) montant devient
égal à l’indice descendant (j).

1 2 3 4 5 I=J=6 7 8 9 10
Pivot
T 6 8 3 1 2 19 31 13 11
10

 On permute le pivot avec l’élément ayant cet indice.

1 2 3 4 5 I=J=6 7 8 9 10
T 2 6 8 3 1 10 19 31 13 11

 Le pivot est à sa place définitive. Il reste à trier récursivement (de la même manière) la
liste1 et la liste2

Algorithme du tri rapide :

2
Classe : 4ème Sciences de l’informatique Module : Les algorithmes de tri

0) Début Proc Tri_rapide (VAR T : Tab ; g, d : entier) T.D.O.L


1) Si d –g>0 Alors Objet Type / Nature
Lg+1 L, M, Aux Entier
M d
Répéter
Tantque (L<M) et (T[g]>T[L]) Faire
LL+1
Fin Tantque

Tantque (L ≤ M) et (T[g] ≤T[M]) Faire


MM-1
Fin Tantque

Si (L<M) Alors
AuxT[L]
T[L]T[M]
T[M]Aux

LL+1
MM-1
Fin si
Jusqu’à (M<=L)

Si (T[g]<T[M])Alors
MM-1
Fin si

AuxT[g]
T[g]T[M]
T[M]Aux

Proc Tri_rapide(T, g, m-1)


Proc Tri_rapide (T, M+1, d)
Fin si
2) Fin Tri_rapide

Vous aimerez peut-être aussi