Ch. 06 · Leçon 1
Méthodes de tri
Ce que vous saurez faire
- →Définir ce qu'est un algorithme de tri
- →Expliquer le principe du tri par sélection
- →Expliquer le principe du tri à bulles
- →Expliquer le principe du tri par insertion
- →Estimer le nombre de comparaisons et de permutations effectuées par chaque méthode
id: 33-239-methodes-de-tri slug: 33-239-methodes-de-tri titre: Méthodes de tri chapitre: 6 chapitre_titre: Les traitements avancés lecon: 1 niveau: 4eme-sci ordre: 1 prerequis: [] duree_estimee_min: 45 mots_cles:
- tri
- selection
- bulle
- insertion
- tableau
- algorithme
- permutation langages:
- analyse objectifs:
- Définir ce qu'est un algorithme de tri
- Expliquer le principe du tri par sélection
- Expliquer le principe du tri à bulles
- Expliquer le principe du tri par insertion
- Estimer le nombre de comparaisons et de permutations effectuées par chaque méthode status: published source_pdf: 33_239.pdf source_pages:
- 1 kind: cours
I. Introduction
La conception d'un algorithme de tri dépend du support matériel de la séquence de valeurs à trier (en mémoire centrale ou sur une mémoire secondaire) :
- Mémoires centrales : rapides (en nanosecondes) mais de taille limitée (en Mo).
- Mémoires secondaires : lentes (en microsecondes) mais de grande taille (en Go).
Les algorithmes de tri vont devoir en tenir compte. Les algorithmes que nous allons définir traitent des tableaux situés dans la mémoire centrale.
II. Les méthodes de tri
On a choisi de trier les séquences par ordre croissant (du plus petit au plus grand) relativement à un ordre total noté ≤.
1. Le tri par sélection
Principe
- Commencer par
i = 1et chercher la position de l'élément le plus petit du tableau (pos_min). - Une fois cet emplacement trouvé, on compare son contenu avec
T[1]et s'ils sont différents (T[1] ≠ T[pos_min]), on permute l'élément de l'emplacement trouvé avec l'élément de la première positionT[1]. Sinon,T[1]reste à sa place. → Après ce parcours, le premier élément est bien placé. - On recommence le même procédé pour le reste du tableau (
T[2], ..., T[n]) : on recherche le plus petit élément de cette nouvelle partie du tableau et on l'échange éventuellement avecT[2]. - Ainsi de suite jusqu'à la dernière partie du tableau formée par les deux derniers éléments (
T[n-1], T[n]).
N.B. La recherche du plus petit élément d'un tableau sera assurée par une fonction renvoyant la position du minimum. Ce minimum est éventuellement répété plusieurs fois dans T ; on décidera de choisir le premier.
2. Le tri à bulles
Principe
Faire remonter le plus grand élément du tableau en comparant les éléments successifs.
- On commence par
i = 1, on compare le 1ᵉʳ (T[1]) et le 2ᵉ élément (T[2]) du tableau. S'ils ne sont pas dans le bon ordre, on les permute. On passe ensuite au 2ᵉ (T[2]) et 3ᵉ (T[3]), puis 3ᵉ et 4ᵉ, et ainsi de suite jusqu'au(n-1)ᵉ (T[n-1]) etnᵉ éléments (T[n]). - À la fin du premier parcours, on aura poussé le plus grand élément du tableau vers sa place finale, qui est le
nᵉ élément du tableau. - On recommence cette opération en parcourant de
1àn-1, puis de1àn-2, et ainsi de suite. - On arrête quand la partie à trier est réduite à un seul élément, ou que le tableau est devenu trié (c.-à-d. aucune permutation n'a été faite lors du dernier parcours, à vérifier par un indicateur).
3. Le tri par insertion
Principe
On suppose que les i - 1 premiers éléments sont triés.
- On cherche la position du
iᵉ élément dans la partie du tableau commençant de1ài. - Si cette position est
i, l'élément est donc à sa bonne place. - Sinon, supposant que cette position est
j; cejest forcément entre1eti - 1. → (1) On affecteT[i]à une variable auxiliairetmp, (2) On décale d'un pas vers l'avant (à droite) tous les éléments dejài - 1, (3) Puis on insère l'élément d'indicei(précédemment sauvegardé danstmp) à la positionj.
On commence ce procédé à partir du 2ᵉ élément i = 2 jusqu'à atteindre la fin du tableau.
Synthèse
| Méthode | Comparaisons (pire cas) | Permutations / décalages (pire cas) |
|---|---|---|
| Tri par sélection | n(n-1)/2 | au maximum n - 1 permutations |
| Tri à bulles | n(n-1)/2 | n(n-1)/2 permutations |
| Tri par insertion | n(n-1)/2 | n(n-1)/2 décalages |
Les trois méthodes ont une complexité quadratique dans le pire des cas, mais elles diffèrent par le nombre d'échanges effectués : le tri par sélection est intéressant lorsque les permutations coûtent cher, tandis que le tri par insertion est efficace si le tableau est déjà presque trié.
Soit le tableau T = [5, 3, 8, 1, 4].
Donnez l'état du tableau après chaque itération du tri par sélection.
Voir le corrigé
- i = 1 : le minimum de
T[1..5]est1à la position 4. On permuteT[1]etT[4]→[1, 3, 8, 5, 4] - i = 2 : le minimum de
T[2..5]est3à la position 2. Pas de permutation →[1, 3, 8, 5, 4] - i = 3 : le minimum de
T[3..5]est4à la position 5. On permuteT[3]etT[5]→[1, 3, 4, 5, 8] - i = 4 : le minimum de
T[4..5]est5à la position 4. Pas de permutation →[1, 3, 4, 5, 8]
Tableau trié : [1, 3, 4, 5, 8]
Soit le tableau T = [4, 2, 7, 1].
Donnez l'état du tableau après chaque parcours du tri à bulles.
Voir le corrigé
Parcours 1 (i de 1 à 3) :
(4, 2)→ permutation →[2, 4, 7, 1](4, 7)→ ok(7, 1)→ permutation →[2, 4, 1, 7]
Parcours 2 (i de 1 à 2) :
(2, 4)→ ok(4, 1)→ permutation →[2, 1, 4, 7]
Parcours 3 (i de 1 à 1) :
(2, 1)→ permutation →[1, 2, 4, 7]
Tableau trié : [1, 2, 4, 7]
Quiz : méthodes de tri
Trois algorithmes à connaître pour le bac. Testez votre compréhension de leur principe et de leur complexité.
Quiz (5 questions)
Principe du tri par **sélection** :
Principe du tri à **bulles** :
Quelle est la **complexité** dans le pire cas de ces trois tris (sélection, bulle, insertion) ?
Lequel de ces tris est le **plus efficace si le tableau est déjà presque trié** ?
Soit le tableau `T = [5, 2, 8, 1, 4]`. Après **une seule passe** du tri par sélection (recherche du minimum global, échange avec T[0]), que vaut T ?