Keyboard shortcuts

Touchez ← ou → pour naviguer les chapitres

Touchez S ou / pour chercher dans le livre

Touchez ? pour afficher ce message

Touchez Esc pour masquer ce message

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 sort des 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.

DescriptionPartie triéePartie non triée
CÎtéGaucheDroit
Index0 
 ii+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éeTraitementSortie
Une liste ou un tableau de valeurs1. 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éeTraitementSortie
Une liste ou un tableau de valeurs1. 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 sort d’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 :

© 2022-2025 David Crowley