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