
Algorithmes de tri (1/2)
Problématique : étant donné une structure linéaire (tableau, liste,
etc) contenant des valeurs d'un type ordonné, il faut trier les
éléments en ordre croissant (ou décroissant).
Il existe des dizaines d'algorithmes répondant à ce problème,
utilisant quelques principes de base auxquels on ajoute des
variantes
On peut distinguer :
les tris internes qui trient les éléments dans la structure qui les contient
(tableau, liste, ...) ou au pire utilise une structure annexe de même type
les tris externes utilisés lorsque la quantité d'éléments à trier est telle qu'ils ne
tiennent pas en mémoire vive et qu'il faut stocker des éléments dans des
fichiers ou des tables de bases de données
Algorithmes de tri (2/2)
Propriétés des algorithmes de tri :
complexité en temps et en espace
stabilité : l'algorithme ne modifie pas l'ordre initial des éléments égaux par
comparaison
tri sur place ou pas : l'algorithme n'utilise pas de mémoire supplémentaire
(hormis éventuellement quelques indices de boucle ou booléens), les
éléments sont triés directement dans la structure de données
La plupart des algorithmes de tri utilisent la comparaison
d'éléments 2 à 2
on montre que le nombre minimum de comparaisons à effectuer est nlog(n) si
n est la taille de la structure. Les algorithmes en O(n2) sont donc peu
efficaces, ceux au pire en O(nlog(n)) sont optimaux
il existe des tris linéaires, mais ils n'utilisent pas la comparaison et sont limités
à des cas très particuliers (tris de nombres dont on connait des propriétés
statistiques)