Vous êtes sur la page 1sur 26

CHAPITRE 4 :

LES ALGORITHMES DE TRI

Niveau : 1ère année Ingénieur Informatique


Groupes : A/B/D Semestre : I
Dr. Ilhem ABDELHEDI ABDELMOULA
Maitre Assistante en Informatique
Ilhem.abdelhedi@enicar.u-carthage.tn
Université de Carthage
Enicarthage École Nationale d’Ingénieurs à Carthage
Département Informatique
Année universitaire : 2020 - 2021
11/15/2020
Mme Ilhem Abdelhedi Abdelmoula
DÉFINITIONS
 Trier un tableau = ordonner tous ses éléments selon un ordre
(croissant, décroissant, critères- date, genre, etc.)
 Un tableau trié permet l’accès rapide pour chercher une
information.

Tableau initial non trié 1 5 3 10 6 10 10


Algorithme de tri 1 2 3 4 5 6 7

1 3 5 6 10 10 10
Tableau final trié
1 2 3 4 5 6 7
Ilhem Abdelhedi Abdelmoula 2
POURQUOI TRIER UN
TABLEAU ?
 Le tri est une opération majeure en informatique..
Un grand nombre d’algorithme de tri ont été inventé.
Quel est l’algorithme de tri optimal ?
 Pour une application donnée, l’algorithme de tri optimal dépend :
 du nombre d’éléments à trier ;
 de la façon dont les éléments sont plus ou moins triés initialement ;
 des restrictions potentielles concernant les valeurs des éléments ;
 du type de périphérique de stockage à utiliser : mémoire principale,
disques ou bandes ;
 etc.
DÉFINITIONS
 Un tableau vide (n=0) ou un tableau contenant un seul élément (n=1),
est trié (ordonné)

Définition :

Un tableau T[1..n], n>1, est dit ordonné ou trié en ordre croissant si


tous les éléments consécutifs du tableau vérifient la condition suivante :
 i  [2..n], T[i-1]  T[i]

Ilhem Abdelhedi Abdelmoula 4


PRINCIPE DE TRI
 Soit un tableau à une dimension T[1..n] à n valeurs dans
un ensemble E de valeurs muni d’une relation d’ordre
notée <
 Trier le tableau T consiste à construire un tableau T‘[1..n]
tels que :
 T‘ et T contiennent les mêmes éléments
 T‘ soit trié.
 Le plus souvent T et T‘ constituent le même tableau ;
 T‘ est construit en permutant les éléments de T .

Ilhem Abdelhedi Abdelmoula 5


ALGORITHMES DE TRI
Ecrire une procédure qui trie les données d’un tableau

TABLEAU NON TRIE

TRI PAR REMPLACEMENT


17 4 8 24 1 13 7
1 2 3 4 5 6 7 TRI PAR SELECTION
Algorithme de
tri TRI PAR INSERTION
TABLEAU TRIE
TRI A
BULLES
1 4 7 8 13 17 24 TRI
INDIRECT
1 2 3 4 5 6 7
…………………….
Ilhem Abdelhedi Abdelmoula
1.TRI PAR REMPLACEMENT OU
EXTRACTION
 Simple et intuitif, mais très peu performant.
 Construit un tableau Ttrié[1..n] à partir de T[1..n] tels que :
Ttrié[i-1]  Ttrié[i] ,  i  [2..n]
 Principe :
1. Identifier le maximum du tableau T
2. Rechercher le minimum du tableau T
3. Recopier ce minimum dans Ttrié à la position i
4. Remplacer le minimum du tableau T par le maximum
5. Recommencer pour i+1

Ilhem Abdelhedi Abdelmoula 7


Exemple Ttrié
Min 4
Tri par remplacement 17 24 8 24 1 2 3 4
1 2 3 4
T Min
Min Max 4 8
17 24 24 24
17 4 8 24 1 2 3 4
1 2 3 4
Min 4 8 17
1 2 3 4
24 24 24 24 1 2 3 4
1 2 3 4
4 8 17 24
1 2 3 4

 Pour chaque élément rangé dans le tableau Ttrié, il faut parcourir tout
le tableau T et non une partie du tableau T
 Nécessite un 2ème tableau, or si le nombre d’éléments à trier est
important, cet algorithme requiert un espace mémoire double.
 Le nombre de boucles et de recherches est important.

Ilhem Abdelhedi Abdelmoula 8


Fonction Max (T: tab; n: entier):entier Fonction ind_min (T: tab; n:
Var: i, m : Entier entier):entier
Début Var: i, min : Entier
m  T[0] Début
Pour i de 1 à n-1 Faire
Si T[i]>m Alors m  T[i] min  0
Finsi Pour i de 1 à n-1 Faire
Finpour Si T[i]<T[min] Alors min  i
Renvoyer (m)
Finsi
Fin
Finpour
Renvoyer (min)
Fin

Ilhem Abdelhedi Abdelmoula 9


Procédure tri_remp (E T: tab; E/S n:Entier; S T’: tab)
Var i,kmax : Entier
Début
kmax  Max(T,n)
Pour i de 0 à n-1 Faire
T’[i]  T[ind_min(T,n)]
T[ind_min(T,n)] kmax
Finpour
Fin

Ilhem Abdelhedi Abdelmoula 10


2. TRI PAR
SÉLECTION
1 2 3 4 5 6 7
•Placer à la première itération le
plus petit élément du tableau 17 4 8 24 1 13 7
parmi n à la première position du 1 4 8 24 17 13 7
tableau.
•A la ième itération, on place le 1 4 8 24 17 13 7
plus petit élément parmi n-i 1 4 7 24 17 13 8
restant à la ième position du
tableau. 1 4 7 8 17 13 24
•L’élément est placé par une
simple permutation de deux
1 4 7 8 13 17 24
éléments 1 4 7 8 13 17 24
•Itération : tant que i < taille
Ilhem Abdelhedi Abdelmoula i min 11
Procedure Permuter (E/S x,y:Entier)
Var z:entier
Début
zx
xy
yz
Fin
Procedure Tri_par_Selection (E/S T: tab; E n: Entier)
Var i,j,ind_min : Entier
Début
Pour i de 0 à n-1 Faire
ind_mini
Pour j de i+1 à n-1 Faire
Si T[j] < T[ind_min] Alors ind_minj
Finsi
FinPour
Permuter(T[i], T[ind_min])
Finpour
Fin
Ilhem Abdelhedi Abdelmoula 12
3.TRI PAR INSERTION
 méthode la +utilisée pour trier un jeu de cartes

On prend une carte ;


puis 2ème carte qu’on met dans l’ordre si nécessaire ;
puis 3ème carte et on met la 3ème carte à sa place dans les 2 premières ;
puis 4ème carte et on met la 4ème carte à sa place dans les 3
premières . . .

Ilhem Abdelhedi Abdelmoula 13


PRINCIPE
On prend le premier élément de
trié Non trié la partie non triée, on l’insère à
i sa place dans la partie triée

 On place l’élément à trier dans une variable temp
 Tant que les éléments du tableau qui précèdent l’élément à trier lui sont
supérieurs, on décale ces éléments d’une position en récupérant
l’espace vide laissé par l’élément trié
 On insère la variable temp à la nouvelle position laissée vacante par le
décalage.

Ilhem Abdelhedi Abdelmoula 14


EXEMPLE Trier un tableau de 5 éléments

48 17 25 9 34
48 25 9 34 17 48 25 9 34
17 en temporaire
17 est comparée aux 17 à la nouvelle position
éléments qui le précèdent.
Décalage de 48

17 48 25 9 34 17 48 9 34 17 25 48 9 34
25 en temporaire 25 est comparée aux
éléments qui le précèdent. 25 à la nouvelle position
Décalage de 48
EXEMPLE (SUITE)
17 25 48 9 34 17 25 48 34 17 25 48 34
9 en temporaire
9 est comparée aux éléments
qui le précèdent. 17 25 48 34
Décalage de 48, puis de 25 puis
de 17
9 17 25 48 34

9 17 25 48 9 17 25 34 48
34 en temporaire 34 est comparée aux éléments
Décalage de 48 qui le précèdent.
Procédure tri_Insertion (E/S t : tab; E/S n: entier)
Var i, pos, tmp : entier
Debut
pour i de 1 à n-1 faire
tmp  t[i]
pos i-1
Tant que (pos >= 0 et t[pos] > tmp ) faire
t[pos+1]t[pos]
t[pos] tmp
pospos-1
FinTantque
t[pos+1]tmp
finpour
Fin
Ilhem Abdelhedi Abdelmoula 17
5. TRI À BULLES
1) On parcourt le tableau de droite à gauche en comparant deux à deux
les éléments e1 et e2 consécutifs adjacents.
 S’ils ne sont pas dans le bon ordre, (e1 > e2 ) on les permute

Cela permet d'obtenir en fin de parcours le plus petit élément de


tab[i..n] placé en position i.
2) On recommence sur tab[i+1, n] jusqu'à ce que :
 L’avant dernier élément ait été classé (le dernier est
obligatoirement à sa place )
 Aucune permutation n’ait possible (l’ensemble des éléments du
tableau est convenablement ordonné)

Ilhem Abdelhedi Abdelmoula 18


EXEMPLE
EXEMPLE
EXEMPLE
EXEMPLE
Procédure Tri_Bulles (E/S t : tab; E n:entier)
Var j : entier
permut : booleen
Debut
permut  vrai
Tant que permut faire
permut  faux
Pour j de 0 à n-1 faire
Si (t[j] > t[j+1]) Alors
permuter(t[j],t[j+1])
permut  vrai
Finsi
Finpour
FinTantque
Fin
Ilhem Abdelhedi Abdelmoula 23
6. TRI INDIRECT
 Utilise un tableau auxiliaire qui indique, pour chaque élément
du tableau à trier, le rang que celui-ci devrait occuper dans le
tableau trié.
Principe :
1. Compter, pour chaque élément du tableau à trier, le nombre
d’éléments qui lui sont inférieurs ou égaux.
2. Le nombre trouvé donnera la place (l’indice) de cet
élément dans le tableau trié
3. Le tri se fait donc ensuite par l'intermédiaire de cet index

Ilhem Abdelhedi Abdelmoula 24


Procédure tri_indirect (E T: tab, S T’: tab; E/S n :entier)
Var i:entier ind :Tab
Début
Pour i de 0 à n-1 Faire
ind[i] 0
Pour k de 0 à n-1 Faire
Si T[k] =< T[i] Alors ind[i] ind[i] + 1
FinSi
FinPour
FinPour

Pour i 0 à n-1 Faire


T’[ind[i]]  T[i]
FinPour
Fin
Ilhem Abdelhedi Abdelmoula 25
AMELIORATION DU COMPTAGE DES
ELEMENTS
Pour i 1 à n-1 Faire
Pour k i+1 à n Faire
Si T[i] < T[k] Alors
ind[i]  ind[i] + 1
Sinon
ind[k]  ind[k] + 1
FinSi
FinPour
FinPour
Ilhem Abdelhedi Abdelmoula 26

Vous aimerez peut-être aussi