3. Les algorithmes de tri sont des procédures
mathématiques fondamentales utilisées pour
classer des données dans un ordre spécifique,
comme par exemple du plus petit au plus grand.
Ils jouent un rôle essentiel dans de nombreux
domaines, depuis la gestion de bases de données
jusqu'à l'optimisation des processus industriels.
Dans cette présentation, nous explorerons les
principaux types d'algorithmes de tri et leurs
applications pratiques.
4. Concepts de
Base des
Algorithmes de
Tri
Le cœur de tout
algorithme de tri
est la
comparaison
des éléments
entre eux. C'est
ce qui permet de
déterminer leur
ordre relatif et
de les
positionner
correctement.
Une fois les
éléments
comparés,
l'algorithme de tri
doit les permuter,
c'est-à-dire les
échanger de
position, afin de
les placer dans
l'ordre souhaité.
COMPARAISON PERMUTATION
5. • Tri par
Insertion
(Insertion sort) • Tri par
Selection
(Selection sort)
• Tri A Bulles
(bubble sort)
• Tri Fusion
(Merge
sort)
• Tri Rapid
(Quick sort)
6. Tri par selection
Principe : Sélectionne le plus petit élément non
trié et l'échange avec le premier élément non
trié.
Meilleure utilisation : Petits ensembles de
données, souvent utilisé à des fins
pédagogiques.
Pire cas : Listes volumineuses.
10. introduction
Le tri à bulle est un algorithme de tri qui compare des éléments adjacents
dans une liste et les échange s'ils sont dans le mauvais ordre, répétant ce
processus jusqu'à ce que la liste soit triée.
Principe général du tri à bulle
Le tri à bulle repose sur un mécanisme simple :
Comparaison : Parcourez la liste d'éléments en comparant chaque paire d'éléments
adjacents.
Échange : Si le premier élément est plus grand que le second, échangez-les.
Répétition : Répétez ce processus pour chaque élément de la liste jusqu'à ce que le plus
grand élément "remonte" à la fin de la liste.
Itération : Continuez à parcourir la liste, en ignorant les éléments déjà triés à la fin, jusqu'à
ce qu'aucun échange ne soit nécessaire, indiquant que la liste est entièrement triée.
12. Exemple de pseudocode pour le tri à bulle :
fonction tri_a_bulle(liste):
n = longueur(liste)
pour i allant de 0 à n-1:
pour j allant de 0 à n-i-1:
si liste[j] > liste[j+1]:
échanger liste[j] et liste[j+1]
retourner liste
15. jeu de tri a bulle
Une approche interactive pour
comprendre l'algorithme du
tri à bulle
1
2
3
9
7
6
5
4
11
22
16
16. III. Tri par insertion
Definition:
Le tri par insertion est un algorithme qui organise une liste en insérant chaque élément dans sa
position correcte dans une sous-liste déjà triée. Il fonctionne en parcourant la liste de gauche à
droite et en déplaçant les éléments jusqu’à trouver leur place.
Importance :
· Simple à implémenter : Facile à comprendre, idéal pour débuter en algorithmique.
· Efficace pour petites listes : Performant pour les petites quantités de données ou les listes
presque triées.
· Algorithme stable : Il conserve l'ordre des éléments égaux.
· Tri en place : Ne nécessite pas de mémoire supplémentaire.
19. Tri Rapid
Principe : Algorithme "diviser pour régner". Sélectionne un pivot, partitionne
le tableau en éléments plus petits ou plus grands, et trie récursivement les
sous-tableaux.
Meilleure utilisation : Grandes listes, bon algorithme polyvalent.
Pire cas : Mauvais choix de pivot.
Complexité : O(n log n) en moyenne, O(n²) dans le pire des cas.
22. Tri fusion
Principe : Divise récursivement le tableau en
deux, trie chaque moitié, puis fusionne les
moitiés triées.
Meilleure utilisation : Grandes listes, tri
stable.
Pire cas : Nécessite de la mémoire
supplémentaire pour la fusion.
Complexité : O(n log n)
27. De plus sur les Algorithmes de Tri
Les algorithmes de tri sont essentiels pour organiser des
données, qu'il s'agisse de nombres, de mots, ou d'éléments
quelconques dans un ordre particulier (croissant ou
décroissant).
L'efficacité d'un algorithme de tri est mesurée principalement
par sa complexité temporelle, qui indique combien de
temps l'algorithme prendra pour trier une liste de taille nnn.
28. Concept de Complexité
• Complexité temporelle : Mesure du temps d'exécution d'un
algorithme en fonction de la taille des données d'entrée
(nnn).
• Types de complexité :
• Meilleur cas : Performance optimale de l'algorithme.
• Pire cas : Performance dans le scénario le plus défavorable.
• Cas moyen : Performance attendue dans des conditions typiques.
29. Complexités des Algorithmes (classées)
Complexité Algorithmes
O(n+k)
Tri par comptage
(plage des valeurs est limitée)
O(n.logn)
Tri rapide, Tri fusion, Tri par tas
(grandes listes, bases de données massives)
O(n^2)
Tri par insertion, Tri par sélection, Tri à bulles
(petites listes ou pour fins pédagogiques)
30. Comparaison des Algorithmes par Cas
d'Utilisation (Listes longues)
Algorithme Temps estimé (10 000 éléments)
Tri à bulles 150 sec
Tri par insertion 120 sec
Tri par sélection 140 sec
Tri rapide 1.5 sec
Tri fusion 1.8 sec
Algorithmes efficaces : O(n.logn)
31. Comparaison pour Listes Presque
Triées
Algorithme
Temps estimé (1 000
éléments)
Tri à bulles 0.3 sec
Tri par insertion 0.2 sec
Tri par sélection 5 sec
Tri rapide 0.7 sec
Tri fusion 0.8 sec
Tri par tas 0.7 sec
Pour des listes presque triées, des algorithmes comme le
tri par insertion sont particulièrement efficaces, car ils
n'ont qu'à ajuster quelques éléments.
32. Performance sur Données Inversées
Algorithme
Temps estimé (1 000
éléments)
Tri à bulles 20 sec
Tri par insertion 15 sec
Tri par sélection 20 sec
Tri rapide 10 sec
Tri fusion 1.2 sec
Tri par tas 1.2 sec
Le pire cas pour les algorithmes quadratiques O(n^2), comme le tri à bulles ou le tri par insertion, est une
liste complètement inversée.
33. Données en Temps Réel (Ajouts
Progressifs)
• Dans un contexte où de nouvelles données sont
continuellement ajoutées, comme des systèmes en temps
réel, le tri par insertion est très efficace, car il permet
d’ajouter et de trier rapidement les nouveaux éléments.
34. Algorithme Temps estimé (100 ajouts)
Tri à bulles 10 sec
Tri par insertion 0.5 sec
Tri par sélection 12 sec
Tri rapide 1 sec
Tri fusion 1.2 sec
Tri par tas 1 sec
35. Grandes bases de données (plusieurs
millions d'éléments)
Algorithme
Vitesse estimée (sec) pour 1
million d'éléments
Tri à bulles 3 heures
Tri par insertion 2.5 heures
Tri par sélection 3 heures
Tri rapide 10 sec
Tri fusion 12 sec
Tri par tas 11 sec
Pour des systèmes de grande échelle, les algorithmes à complexité O(n.log
n) sont absolument nécessaires.
36. Tri multi-critères (tri basé sur plusieurs
attributs)
• Dans des contextes comme le tri de données avec
plusieurs critères (par exemple, tri d'une liste
d'objets par nom, puis par âge), le tri stable comme
le tri fusion est utile pour préserver l'ordre relatif
des éléments.
37. Algorithme
Vitesse estimée (sec) pour 500
éléments avec 3 critères
Tri à bulles 1.5 sec
Tri par insertion 1.2 sec
Tri par sélection 1.8 sec
Tri rapide 0.5 sec
Tri fusion 0.6 sec
Tri par tas 0.6 sec
38. Listes Longues Listes Presque Triées Données Inversées Ajouts Progressifs Grandes Bases de
Données
Tri Multi-Critères
0
20
40
60
80
100
120
140
160
150 0.3 20 10
10800
1.5
120 0.2 15 0.5
9000
1.2
140 5 20 12
10800
1.8
1.5 0.7 10 1 10 0.5
1.8 0.8 1.2 1.2 12 0.6
COMPARAISON DES ALGO DE TRI
Tri A Bulle Tri par Insertion Tri par Sélection Tri Rapide Tri Fusion
SITUATION
TEMPS
39. Résumé des Cas d'Utilisation Courants
• Tri à bulles : Principalement pour l'enseignement, en raison
de sa simplicité.
• Tri par insertion : Idéal pour les petites listes ou les listes
presque triées.
• Tri rapide : Extrêmement efficace pour les grandes listes.
• Tri fusion : Performant pour de vastes ensembles de
données, avec une stabilité garantie.
• Tri par tas : Convient aux situations où un tri en place est
nécessaire.
40. Résumé des Cas d'Utilisation Courants
• Listes longues : Tri rapide, Tri fusion, Tri par tas sont les
meilleurs choix.
• Listes presque triées : Tri par insertion excelle.
• Grandes bases de données : Tri rapide, Tri fusion, Tri par
tas dominent.
• Données en temps réel : Tri par insertion fonctionne bien
pour des ajouts progressifs.
• Utilisation pédagogique : Tri à bulles, Tri par insertion sont
populaires pour l'apprentissage.
41. points clés abordés :
• La performance des algorithmes de tri varie selon les cas
d'utilisation.
• Choisir le bon algorithme peut considérablement améliorer
l'efficacité du traitement des données.
44. Qu'est-ce qu'un Algorithme Hybride ?
• Un algorithme hybride combine les stratégies de
plusieurs algorithmes de tri pour tirer parti de leurs
forces respectives et s'adapter aux caractéristiques
spécifiques des données.
45. Pourquoi Utiliser des Algorithmes
Hybrides ?
• Efficacité Améliorée : En utilisant la meilleure méthode
selon la situation, les algorithmes hybrides peuvent offrir de
meilleures performances que les algorithmes traditionnels.
• Flexibilité : Ils s'adaptent aux différentes structures de
données, qu'il s'agisse de listes presque triées ou de grandes
quantités de données aléatoires.
46. Exemples d'Algorithmes Hybrides :
• Timsort : Combine le tri par insertion et le tri fusion,
optimisé pour les données réelles(python).
• Introsort : Utilise le tri rapide et le tri par tas pour
éviter le pire cas du tri rapide(c++).