Qu'est-ce qu'un tri? On suppose qu'on se donne un suite de nombres
entiers, et on veut les ranger en ordre croissant (ou décroissant) au
sens large. Ainsi, pour
, la suite
devra
devenir
.
Dans tout ce qui suit, on suppose que l'on trie des nombres entiers et
que ceux-ci se trouvent dans un tableau .
L'algorithme de tri le plus simple est le tri par sélection. Il
consiste à trouver l'emplacement de l'élément le plus petit du
tableau, c'est-à-dire l'entier tel que
pour
tout
. Une fois cet emplacement trouvé, on échange les
éléments
et
.
Puis on recommence ces opérations sur la suite
, ainsi on recherche le plus petit
élément de cette nouvelle suite et on l'échange avec
. Et ainsi
de suite ...jusqu'au moment où on n'a plus qu'une suite
composée d'un seul élément
.
Un exemple numérique pour le tri par sélection est donné ci-dessous dans la figure 1.
|
Évaluez la complexité de cet algorithme. Voir réponse 26.
Traduisez cet algorithme en langage C. Voir réponse 26.
Une variante du tri par sélection est le tri bulle. Son
principe est de parcourir la suite
en
intervertissant toute paire d'éléments consécutifs
non ordonnés. Ainsi aprés un parcours, l'élément maximum se retrouve
en
. On recommence alors avec le préfixe
, puis
...
Le nom de tri bulle vient donc de ce que les plus grands nombres se déplacent vers la droite en poussant des bulles successives de la gauche vers la droite.La fonction correspondante utilise un indice i qui marque la fin du préfixe à trier, et l'indice j qui permet de déplacer la bulle qui monte vers la borne i.
L'exemple numérique précédent (Figure 1) est donné avec le tri bulle ci-dessous dans la figure 2.
|
Évaluez la complexité de cet algorithme. Voir réponse 27.
Traduisez cet algorithme en langage C. Voir réponse 27.
Le tri fusion se base sur le fait qu'il est aisé de fusionner deux
listes triées et
en une liste triée
, et ce en temps
(vu en TD et en
section 7.2.2). Le tri se fait ensuite en
divisant pour règner:
On obtient donc la récurrence
, qui se
résout en utilisant le même type de technique qu'en
section 4.2.2.
![]() |
Or, comme , dès que
est inférieur à
, on a
. Or
ssi
. Donc on a
, ce qui est bien mieux que les autres tris précédemment
étudiés.