L2S3 Harmonisation Algorithmique 2016–2017
UFR d’IEEA – Université Lille 1
DM : Tris de tableaux
Pour tester les algorithmes à écrire dans ce DM vous pouvez utiliser le fichier permutation.py
donné sur le portail. Il fournit les fonctions suivantes :
fonction identite(n : entier) retourne tableau d’entiers qui prend en paramètre
un entier net retourne un tableau de taille ndont la case icontient l’entier i
fonction melange(T : tableau d’entiers) retourne tableau d’entiers qui prend
en paramètre un tableau d’entiers et échange (pseudo-)aléatoirement ses cases
Travail à rendre
Vous devez rendre sur papier les réponses aux questions. Votre éventuel code python n’est
pas demandé mais vous pouvez le joindre en annexe si vous le souhaitez.
Les questions sur la complexité ne sont pas facultatives mais constituent l’intérêt principal
du DM ... Pour les pires et meilleurs cas il faut simplement regarder s’il y a une/des condition(s)
qui permet(tent) de terminer plus rapidement l’exécution. Ces conditions donnent en général
une information sur la forme que doit avoir la donnée (triée, à moitiée triée ou autre ...) pour
atteindre un pire ou un meilleur cas de l’algorithme.
Pour les preuves d’algorithme, les propriétés auxquelles il faut réfléchir ne sont pas néces-
sairement compliquées, elles peuvent même être (très) évidentes. L’idée est de convaincre un
interlocuteur que votre algorithme fait bien ce qui est attendu de lui, il y a donc quelques ar-
guments (assez simples) à donner. Notez que ce qui a l’air le plus évident est souvent difficile à
expliquer mais c’est un exercice important d’arriver à tirer de l’évidence un argument convain-
cant.
1. Tri à bulles
Le tri à bulles est le tri le plus naturel, son principe est très simple : on parcours le tableau
jusqu’à la fin et chaque fois qu’on rencontre un indice ipour lequel t(i)est supérieur à t(i+ 1)
on intervertit ces deux éléments. On recommence le parcours tant que le tableau n’est pas trié.
Les premières questions ont pour objectif de vous aider à bien comprendre comment fonc-
tionne l’algorithme.
1.1 L’agorithme
Q1.1 . Testez à la main l’algorithme du tri à bulles sur le tableau t= [5; 4; 3; 2; 1] en représentant
le tableau après chaque échange d’éléments.
Q1.2 . Que se passe-t-il pour le plus grand élément ? Et pour le plus petit ? Observez également
la progression des autres éléments.
Q1.3 . En déduire une borne supérieure du nombre de parcours nécessaires au tri du tableau.
Q1.4 . Il y a plusieurs variantes de l’algorithme dont certaines utilisent la borne précédement
identifiée, mais pas toutes. Ecrivez en pseudo code le tri à bulles en essayant d’obtenir une variante
qui effectue le moins possible de comparaisons entre les éléments du tableau. Vous pouvez donner
plusieurs versions de l’algorithme. Justifiez si possible l’efficacité de votre tri.
1