Universit´e de Provence
Master1 Math´ematiques et applications 2009-2010
Algorithmique et programmation. TD1
1- Deux tris ´el´ementaires
On se propose d’´etudier deux algorithmes visant `a trier par ordre croissant les ´el´ements d’un
tableau td’entiers. Dans tout l’´enonc´e on notera t[i .. j] la partie du tableau compos´ee des ´el´ements
d’indice k,i≤k≤j. Par convention, cette partie est vide si i > j.
Tri par s´election
Le tri par s´election consiste `a it´erer le processus suivant : si t[0 .. (i−1)] est la partie du tableau
d´ej`a tri´ee, chercher l’indice mdu minimum de la partie restante t[i..n] et ´echanger t[i] et t[m].
1. Exprimer en fran¸cais structur´e cet algorithme, d´emontrer sa correction et calculer sa com-
plexit´e en temps.
2. D´efinir dans la classe T ri selection munie de la variable tcorrectement d´eclar´ee, une m´ethode
min qui prend en entr´ee un indice iet qui renvoie l’indice du minimum de t[i..n] o`u nd´esigne
l’indice de la derni`ere case du tableau t.
3. D´efinir une m´ethode echange qui prend en param`etres deux entiers iet jet qui ´echange le
contenu des cases t[i] et t[j].
4. D´efinir une m´ethode tri qui prend en param`etre un tableau d’entiers a, et qui op`ere sur ale
tri par s´election. Elle utilisera bien sˆur, les m´ethodes d´efinies aux 2 questions pr´ec´edentes.
Tri par insertion
Le tri par insertion consiste `a it´erer le processus suivant : si t[0 .. (i−1)] est la partie du tableau
d´ej`a tri´ee, placer `a l’endroit correct la valeur t[i] dans la liste t[0..(i−1)] de fa¸con `a ce que t[0..i]
soit tri´ee.
1. Exprimer en fran¸cais structur´e cet algorithme. On structurera l’algorithme de telle sorte qu’il
fasse appel `a un algorithme placer qui prend en entr´ee un indice iet qui, en supposant que
t[0 .. (i−1)] est tri´ee par ordre croissant, ins`ere correctement la valeur t[i] dans t[0 .. (i−
1)]. On donnera deux version de l’algorithme placer, l’une utilisant notamment la recherche
dichotomique.
2. D´emontrer sa correction.
3. Calculer sa complexit´e en temps (pour les deux versions).
4. D´efinir dans une classe T ri insertion munie de la variable tcorrectement d´eclar´ee, une
m´ethode placer qui prend en entr´ee un indice iet qui, en supposant que t[0 .. (i−1)] est
tri´ee par ordre croissant, ins`ere correctement la valeur t[i] dans t[0 .. (i−1)].
5. D´efinir dans la classe T ri insertion une m´ethode tri qui prend en param`etre un tableau
d’entiers a, et qui op`ere sur ale tri par insertion.
Programme principal
Ecrire une classe T ris, contenant la m´ethode main, qui op`ere un tri par s´election ou un tri par
insertion sur une liste d’entiers donn´es en param`etre du programme et affiche `a l’´ecran la liste une
fois tri´ee.