Accueil > Structures de données et algorithmes >
đ Algorithmes de tri classiques
Survol et attentes
Comme avec les algorithmes de recherche, les algorithmes de tri sont des bons exercices pour dĂ©velopper la capacitĂ© Ă analyser une tĂąche de traitement de donnĂ©es et dâarriver Ă une solution valide.
Les algorithmes de tri sont gĂ©nĂ©ralement plus complexes que les algorithmes de recherche parce que le nombre de comparaisons Ă faire est plus grand et il faut dĂ©placer des Ă©lĂ©ments pour produire lâordre voulu.
Pour ces types de problÚmes, au quotidien, vous utiliserez généralement des solutions optimisées comme la méthode
sortdes différents objets de votre langage de programmation.
Définitions
Vous devrez comprendre deux algorithmes de recherche : le tri par sélection et le tri par insertion.
Exemple et solution
Dans les exemples ci dessous, la partie triée de la collection se trouve à la gauche et la partie non triée se trouve à la droite.
| Description | Partie triée | Partie non triée |
|---|---|---|
| CÎté | Gauche | Droit |
| Index | 0 ⊠i | i+1 ⊠length - 1 |
Le tri par sĂ©lection trouve lâindex du plus petit Ă©lĂ©ment dans la partie non triĂ©e de la collection et Ă©change lâĂ©lĂ©ment Ă cette position avec le premier Ă©lĂ©ment de la partie non triĂ©e. En rĂ©pĂ©tant cette action, la partie triĂ©e grandie Ă mesure que la partie non triĂ©e diminue jusquâĂ ce quâon atteigne la fin de la collection. Voici le portrait entrĂ©e/traitement/sortie (ETS) pour lâalgorithme :
| Entrée | Traitement | Sortie |
|---|---|---|
| Une liste ou un tableau de valeurs | 1. Identifier lâindex min comme lâindex de la premiĂšre valeur dans la partie non-triĂ©e du tableau. 2. Comparer la valeur Ă lâindex min avec toutes les valeurs restantes dans la partie non triĂ©e : si lâautre valeur est plus petite, changer lâindex min pour lâindex de la valeur plus petite. 3. Ăchanger la valeur du premier Ă©lĂ©ment de la partie non-triĂ©e avec la valeur Ă lâindex min. 4. Avancer dâune position dans la collection et rĂ©pĂ©ter les Ă©tapes 1 Ă 3 jusquâĂ ce quâon arrive Ă lâavant dernier index. | Retourner rien (le tableau ou la liste original est triĂ© sur place en mĂ©moire) |
Points clés sur le tri par sélection :
- La âsĂ©lectionâ fait rĂ©fĂ©rence Ă lâidĂ©e que cette algorithme sĂ©lectionne la valeur minimale parmis toutes les valeurs non triĂ©es pour ensuite lâajouter Ă la fin de la partie triĂ©e.
- Il faut toujours comparer toutes les valeurs de la collection jusquâĂ lâavant-derniĂšre position mĂȘme si la collection est dĂ©jĂ triĂ©e.
Le tri par insertion fonctionne diffĂ©remment. Il compare la prochaine valeur non-triĂ©e avec les valeurs dĂ©jĂ triĂ©es, afin dâinsĂ©rer cette valeur au bon endroit. Voici le portrait entrĂ©e/traitement/sortie (ETS) pour lâalgorithme :
| Entrée | Traitement | Sortie |
|---|---|---|
| Une liste ou un tableau de valeurs | 1. DĂ©finir lâindex actuel Ă 1. 2. Pendant que actuel est moins grand que la taille de la collection - 1, rĂ©pĂ©ter les Ă©tapes 3 Ă 7. 3. Assigner Ă temp la valeur Ă lâindex actuel. 4. DĂ©finir lâindex final comme (actuel - 1). 5. Pendant que final est plus grand que 0 ET temp et plus petit que la valeur Ă lâindex final, diminuer la valeur de final par 1. 6. Ăchanger les valeurs aux index actuel et final. 7. Augmenter actuel par 1. | Retourner rien (le tableau ou la liste original est triĂ© sur place en mĂ©moire) |
Points clés sur le tri par insertion :
- Le nom âinsertionâ fait rĂ©fĂ©rence Ă lâidĂ©e que la prochaine valeur non triĂ©e est insĂ©rĂ©e au bon endroit dans la partie triĂ©e.
- Si la collection est déjà triée, cet algorithme fera un minimum de comparaisons et aucun échange de positions. Il est donc plus efficace que le tri par sélection dans cette situation.
- Si la collection est triĂ©e avec lâordre opposĂ© (p.ex du plus grand au plus petit), le pire cas pour cet algorithme, le tri par insertion fera le mĂȘme nombre de comparaisons que le tri par sĂ©lection.
Objectifs dâapprentissage
Ă la fin de cette leçon vous devrez ĂȘtre en mesure de :
- DiffĂ©rencier le tri par sĂ©lection du tri par insertion selon des descriptions ou des exemples dâimplĂ©mentation.
- Identifier les meilleurs et les pires cas de lâĂ©tat initial du tableau sur la performance de chacun de ces algorithmes de tri (p. ex. si le tableau est dĂ©jĂ ou presque triĂ©, si le tableau est triĂ© dans lâordre opposĂ©, etc.)
CritĂšres de succĂšs
- Je suis capable dâutiliser la mĂ©thode
sortdâun ArrayList, dâun LinkedList ou dâArrays pour faire une recherche dans diffĂ©rents types de collections Java. - Je suis capable dâimplĂ©menter et dâexpliquer un algorithme de tri par insertion pour des tableaux.
Notes et exercices
Pratique avec les algorithmes de base
Vous pouvez trouvez des vidĂ©os explicatives, des exemples dâimplĂ©mentations Java utilisant des tableaux et des ArrayList et des exercices interactifs en lien avec ce sujet sur le site CS Awesome, notamment la section suivante :