TP n 6

Transcription

TP n 6
Université Paris Diderot
MASS L2
JAVA
Année 2007-2008
TP n◦6
Recherche et tris
Récupérez les fichiers Annuaire.java, Abonne.java, AffAnn.java et Telephone.java disponible
à l’URL suivante :
http://mickaelpechaud.free.fr/MASS/TP6/
et mettez-les tous dans un même répertoire TP6. Nous allons travailler dans Annuaire.java
exclusivement.
Testez vos méthode au fur et à mesure !
Exercice 1
1. Dans la classe Annuaire, implémentez un algorithme Abonne dicho(Telephone tel) effectuant une recherche par dichotomie de l’abonné correspondant au numéro de téléphone
sur un annuaire trié. Quelles-sont les complexités dans le meilleur et dans le pire des cas de
cet algorithme ? Quelle sont les avantages et inconvénients de cette méthode par rapport
à la précédente ?
Pour tester votre algorithme, vous utiliserez les versions triées des annuaires également
disponibles sur la page web.
2. En utilisant les commandes Chrono.start(); (démarer un chronomètre) et Chrono.time();
(afficher le temps du chronomètre en millisecondes), comparez empiriquement les vitesses
de abonne (recherche linéaire) et dicho (recherche par dichotomie) sur un grand annuaire.
Exercice 2
1. Écrire une méthode void swap(int i, int j) qui intervertit les abonnés i et j.
2. Implémenter le tri à bulles pour la classe Annuaire.
3. Si a est un Annuaire, on fournit les commandes suivantes :
– a.graph() : ouvre une fenêtre pour représenter graphiquement l’annuaire. Chaque point
représente un abonné. Son abscisse est sa place dans la liste, son ordonnée correspond
à son numéro de téléphone.
– a.dessin.draw() : met à jour cette représentation.
En utilisant ces 2 commandes, visualisez l’évolution de votre tri à bulles sur l’annuaire
de taille 1000 (vous placerez un a.graph() après le chargement de l’annuaire, et des
a.draw() dans l’algorithme de tri à bulles). Pourquoi appelle-t-on cet algorithme tri à
bulles ?
4. Implémenter et visualisez le tri par selection.
5. Implémenter et visualisez le tri par insertion.
1