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.