TD 3
Tris
Exercice 1 : tri `a bulles
L’algorithme de tri `
a bulles consiste `
a parcourir le tableau `
a trier et `
a comparer chaque
´
el´
ement avec son voisin de droite. Lorsque deux ´
el´
ements cons´
ecutifs ne sont pas dans
l’ordre croissant, ils sont ´
echang´
es. Apr`
es un parcours complet du tableau, on recommence
l’op´
eration. Lorsqu’un parcours n’a donn´
e lieu `
a aucun ´
echange, cela signifie que le tableau
est tri´
ee : l’algorithme s’arrˆ
ete.
1) (TD) Trier le tableau suivant selon l’algorithme du tri `
a bulles en donnant toutes les
´
etapes interm´
ediaires r´
ealis´
ees.
1 4 3 5 2 0 6 8 7
2) (TD) Donner en pseudo-code l’impl´
ementation de la fonction tri_bulles(tableau) qui
prend en param`
etre un tableau et le trie selon l’algorithme du tri `
a bulles.
3) (TD) Donner la complexit´
e de cet algorithme.
4) (TP) L’impl´
ementer en Java.
Exercice 2 : tri par s´election
Il consiste en la recherche du plus grand ´
el´
ement du tableau qui va ˆ
etre plac´
e`
a sa position
d´
efinitive c’est-`
a-dire en derni`
ere position. L’algorithme continue en recherchant le plus
grand ´
el´
ement du tableau priv´
e de son dernier ´
el´
ement, qui va ˆ
etre plac´
e en avant derni`
ere
position. Et ainsi de suite pour tous les ´
el´
ements du tableau, qui sera finalement tri´
e.
1) (TD) Trier le tableau suivant selon l’algorithme du tri par s´
election en donnant toutes les
´
etapes interm´
ediaires r´
ealis´
ees.
1 4 3 5 2 0 6 8 7
2) (TD) Donner en pseudo-code l’impl´
ementation de la fonction tri_selection(tableau)
qui prend en param`
etre un tableau et le trie selon l’algorithme du par s´
election.
3) (TD) Donner la complexit´
e de cet algorithme.
4) (TP) L’impl´
ementer en Java.
Exercice 3 : tri par insertion
Le tri par insertion consiste `
a maintenir un tableau tri´
e au fur et `
a mesure de sa cr´
eation.
Pour ce faire, `
a chaque ajout d’´
el´
ement, le tableau est parcouru de mani`
ere `
a trouver la
bonne place du nouvel ´
el´
ement. Il ne reste ensuite plus qu’`
a d´
ecaler `
a droite les ´
el´
ements
qui se trouvent apr`
es la position d’insertion.
1) (TD) Utiliser le tri par insertion pour obtenir un tableau tri´
e en ins´
erant successivement
les valeurs 1, 4, 3, 5, 2, 0, 6, 8, 7.
1
2) (TD) Donner en pseudo-code l’impl´
ementation de la fonction inserer(tableau, e) qui
prend en param`
etre un tableau tri´
e et un ´
el´
ement, et ins`
ere l’´
el´
ement dans le tableau de
mani`
ere `
a ce qu’il reste tri´
e.
3) (TD) Donner la complexit´
e de cet algorithme.
4) (TP) L’impl´
ementer en Java.
Exercice 4 : tri rapide
La m´
ethode consiste `
a placer un ´
el´
ement du tableau (appel´
epivot)`
a sa place d´
efinitive, en
permutant tous les ´
el´
ements de telle sorte que tous ceux qui lui sont inf´
erieurs soient `
a sa
gauche et que tous ceux qui lui sont sup´
erieurs soient `
a sa droite. Cette op´
eration s’appelle
le partitionnement. Pour chacun des sous tableaux situ´
es `
a droite et `
a gauche du pivot,
on d´
efinit un nouveau pivot et on r´
ep`
ete l’op´
eration de partitionnement. Ce processus est
r´
ep´
et´
e r´
ecursivement, jusqu’`
a ce que l’ensemble des ´
el´
ements soit tri´
e. G´
en´
eralement, on
choisit comme pivot le premier ´
el´
ement du tableau.
1) (TD) Trier le tableau suivant selon l’algorithme du tri rapide en donnant toutes les ´
etapes
interm´
ediaires r´
ealis´
ees.
1 4 3 5 2 0 6 8 7
2) (TD) Donner en pseudo-code l’impl´
ementation de la fonction tri_rapide(tableau) qui
prend en param`
etre un tableau et le trie selon l’algorithme rapide.
3) (TD) Donner la complexit´
e de cet algorithme.
4) (TP) L’impl´
ementer en Java.
Exercice 5 : tri fusion
L’algorithme consiste `
a eectuer de mani`
ere r´
ecursive les op´
eration suivantes :
(i) le tableau est d´
ecoup´
e en deux parties de longueur ´
equivalentes ;
(ii) les deux moiti´
es du tableau sont tri´
ees par l’algorithme de mani`
ere r´
ecursive ;
(iii) les deux moiti´
es maintenant tri´
ees sont fusionn´
ees pour obtenir finalement la version
tri´
ee du tableau initial.
L’int´
erˆ
et de l’algorithme repose sur le fait que la fusion de deux tableaux tri´
es est r´
ealisable
en temps lin´
eaire.
1) (TD) Trier le tableau suivant selon l’algorithme du tri fusion en donnant toutes les ´
etapes
interm´
ediaires r´
ealis´
ees.
1 4 3 5 2 0 6 8 7
2) (TD) Donner en pseudo-code l’impl´
ementation de la fonction tri_fusion(tableau) qui
prend en param`
etre un tableau et le trie selon l’algorithme fusion. Commencer par ´
ecrire
la fonction fusion(tableau1, tableau2) qui fusionne les deux tableaux en un tableau
tri´
e.
3) (TD) Donner la complexit´
e de cet algorithme.
4) (TP) L’impl´
ementer en Java.
R´ef´erences
Les algorithmes pr´
esent´
es dans ce TD/TP sont tir´
es des pages de wikipedia consacr´
ees aux
tris.
2
1 / 2 100%