Université Paris Diderot – Paris 7 Algorithmique
L3 Informatique Année 2009-2010, 1er semestre
Borne inférieure sur la complexité du tri d’un tableau
Soit Aun algorithme de tri d’un tableau Tqui repose uniquement sur des comparaisons d’éléments du
tableau entre eux. On souhaite montrer qu’un tel algorithme effectue dans le pire cas au moins n(log2n−2)
comparaisons, où nest la taille du tableau T.
Exercice 1 [Permutations]
1. Supposons que pour trier des tableaux de néléments distincts parmi {1, . . . , n}, tout algorithme
effectue au moins n(log2n−2) comparaisons dans le pire cas. Justifier alors que tout algorithme
pour trier des tableaux quelconques de néléments effectue au moins n(log2n−2) comparaisons
dans le pire cas.
2. En déduire que pour montrer notre borne inférieure, on peut se restreindre au cas des tableaux
dont les néléments sont distincts et appartiennent à {1, . . . , n}.
Ainsi, dans toute la suite, Tdésignera un tableau à néléments distincts de l’ensemble {1, . . . , n}.
Exercice 2 [Arbre des comparaisons]
On représente le fonctionnement de l’algorithme Apar un arbre binaire comme suit. Cet arbre repré-
sente uniquement les comparaisons et pas les éventuelles modifications apportées au tableau au cours de
l’algorithme. Il est appelé arbre des comparaisons de l’algorithme A.
Lorsque Acompare deux éléments T[i]et T[j], il y a deux situations possibles selon le tableau T: soit
T[i]< T [j], soit T[i]> T [j]. On représentera cette situation par un branchement dans l’arbre : le fils
gauche correspond à la situation T[i]< T [j], c’est-à-dire qu’il s’agit des tableaux pour lesquels T[i]< T [j]
à cette étape de l’algorithme, tandis que le fils droit correspond à la situation T[i]> T [j], c’est-à-dire
qu’il s’agit des tableaux pour lesquels T[i]> T [j]à cette étape de l’algorithme. Dans chacun des deux
sous-arbres, l’algorithme continue les comparaisons (et les éventuelles permutations d’éléments) jusqu’à
ce que le tableau soit trié.
Par exemple, pour trier un tableau à trois éléments, le tri par sélection trouve d’abord le maximum du
tableau, c’est-à-dire qu’il compare d’abord T[1] et T[2] ; si T[1] < T [2], il compare ensuite T[2] et T[3],
sinon il compare T[1] et T[3] ; il place le maximum à la fin du tableau (opération non représentée dans
l’arbre) ; et pour terminer il compare T[1] et T[2]. L’arbre des comparaisons du tri par sélection pour un
tableau de taille 3 est donc le suivant :
T[1] < T [2]?
T[2] < T [3]?
T[1] < T [2]?
• •
T[1] < T [2]?
• •
T[1] < T [3]?
T[1] < T [2]?
• •
T[1] < T [2]?
• •
1