Académique Documents
Professionnel Documents
Culture Documents
Département Informatique
IQ-S2 – M2103 – Bases de la programmation orientée objet
Le but de ce TP est de réaliser une application qui va exécuter trois algorithmes de tri, dans 3
threads différents. Pour se rendre compte de l'état des algorithmes, on effectuera un
affichage graphique ressemblant à la capture suivante (effectuée pendant le tri).
Algorithmes de tris.
Il existe plusieurs algorithmes de tris. Les trois plus classiques sont les suivants.
Sur un tableau de n éléments (numérotés de 0 à n-1), le principe du tri par sélection est le
suivant :
- rechercher le plus petit élément du tableau, et l'échanger avec l'élément d'indice 0 ;
- rechercher le second plus petit élément du tableau, et l'échanger avec l'élément
d'indice 1 ;
- continuer de cette façon jusqu'à ce que le tableau soit entièrement trié.
pour j de i+1 à n
si t[j] < t[min], alors min <- j
si min ≠ i, alors échanger t[i] et t[min]
6) Faire une classe TSelectionSort, héritant de TSort et ayant une méthode sort()
implémentant le tri ci-dessus.
7) Dans le compte-rendu : faire un copier/coller de la méthode sort, faire un
copier/coller du tableau non trié et trié.
Le tri rapide (en anglais quicksort) est un algorithme de tri inventé par C.A.R Hoare en 1961
et fondé sur la méthode de conception diviser pour régner. La complexité moyenne du tri
rapide pour n éléments est proportionnelle à n log n, ce qui est optimal pour un tri par
comparaison, mais la complexité dans le pire des cas est quadratique. Malgré ce désavantage
théorique, c'est en pratique un des tris les plus rapides, et donc un des plus utilisés.
8) Faire une classe TQuickSort, héritant de TSort et ayant une méthode sort()
implémentant le tri ci-dessus (tri_rapide et partitionner devenant deux méthodes
privés appelées par sort())..
9) Dans le compte-rendu : faire un copier/coller de la méthode sort, faire un
copier/coller du tableau non trié et trié.
Interface graphique.
1. Remplacer votre classe TSort par celle sur le commun gérant les threads (voir
description ci-dessus). Ajouter un deuxième constructeur à vos classes de tris
(appelant le super avec tous les arguments de la classe mère).
Exemple :
Thread bubblesort =
new Thread (
new TBubbleSort(
(ArrayList<Integer>)tab1.clone(),
jPanel1.getGraphics(),
jPanel1.getWidth(),
jPanel1.getHeight()
)
);
bubblesort.start() ;
Dans le compte-rendu : faire une capture écran de la fenêtre pendant le tri et après le tri.