Académique Documents
Professionnel Documents
Culture Documents
9 5 1 6 2
1 5 9 6 2
1 2 9 6 5
1 2 5 6 9
1 2 5 6 9
Exer
i
e 1 (TD) Complexité dans le pire des
as On qualie un tableau donné de
pire des
as lorsqu'il fait ee
tuer à l'algorithme le nombre maximal d'opérations, le type
d'opérations étant à pré
iser (allo
ation mémoire,
al
ul arithmétique, . . . ).
Quel est le pire des
as en nombre d'é
hanges pour la méthode pré
édente ?
À
ombien d'é
hanges pro
ède-t-on alors ?
Quel est le nombre de
omparaisons ee
tuées lors du tri ?
Exer
i
e 2 (TD/TP) Tri par séle
tion É
rivez les méthodes suivantes :
1. une méthode e
hange(int [℄ t, int p1, int p2) qui é
hange les éléments t[p1℄ et
t[p2℄ du tableau.
2. une méthode triSel(int [℄ t) itérative qui réalise le tri par séle
tion.
2 Tri à bulle
Le tri à bulles est sans doute le plus lent des tris possibles. L'idée est de
omparer su
essive-
ment tous les éléments adja
ents d'un tableau et de les é
hanger si le premier élément est supérieur
au se
ond. On re
ommen
e
ette opération tant que tous les éléments ne sont pas triés
Exer
i
e 4 (TP) Tri à bulles Implantez une méthode triBulle(int [℄ tab) qui trie
le tableau tab sur pla
e (
'est à dire sans tableau auxiliaire) par la méthode du tri à bulle.
1
3 Tri fusion
Le tri par fusion est le dernier exemple d'algorithme de tri que nous verrons dans
e TD. Le
prin
ipe repose sur la
onstatation qu'il est fa
ile de fusionner deux tableaux déjà triés. L'algorithme
onsiste don
à diviser le tableau en deux parties à peu près égales, à trier les deux moitiés et à
fusionner le résultat.
Par exemple, si le tableau à trier est [9, 5, 1, 6, 2], l'algorithme donne la su
ession suivante :
9 5 1 6 2
9 5 1 6 2
9 5
9 5 1 6 2
5 9
1 5 9 2 6
1 2 5 6 9
Exer
i
e 5 (TD/TP) Division Donnez une méthode divise(int [℄ tab, int pos1,
int pos2) retournant un tableau de longueur pos2 − pos1 +1
ontenant les valeurs de tab
entre les valeur pos1 et pos2 in
lus.
Exer
i
e 7 (TD/TP) Tri fusion À partir des deux méthodes pré
édentes, proposez une
méthode triFusion(int [℄ tab) ré
ursive retournant le tableau tab trié dans l'ordre
rois-
sant.
Exer
i
e 9 (TP) Amélioration du tri par séle
tion Adaptez le tri par séle
tion de ma-
nière à pla
er à
haque passage le minimum des valeurs non triées du tableau en début et le
maximum de
es valeurs à la n. Donnez en une version ré
ursive.
Exer
i
e 10 (TP) Tri fusion sur pla
e L'algorithme de tri fusion tel qu'il est présenté
dans la se
tion 3 possède l'in
onvénient de
réer un nombre non négligeable de
opies des
valeurs de départ (
f. la méthode divise). On peut se passer de
es
opies en
onsidérant que
s
inder le tableau en deux moitiés revient à donner les bornes
orrespondant aux
ases que
l'on veut trier.
Proposez une méthode triFusionAux(int [℄ tab,int debut, int fin) ré
ursive
retour-
nant un tableau trié de longueur fin − debut +1
ontenant les valeur de tab entre les
ases
debut et fin (in
lues). Modiez triFusion en
onséquen
e.