Universit´e Paris Diderot JAVA
MASS L2 Ann´ee 2007-2008
TP n5 - Correction
Recherche et tris
L’objectif de ce TP et des suivants va ˆetre d’impl´ementer divers algorithmes de recherche et
de tri, dans le but de g´erer un annuaire invers´e.
Testez vos m´ethode au fur et `a mesure !
Exercice 1
Sur la page des TPs, r´ecup´erez les sources Telephone.java,Abonne.java, et essayez de com-
prendre comment fonctionnent ces classes. Compl´eter les corps des m´ethodes indiqu´ees par
////////////// . Ne passez pas plus de 30 min sur cette question. Le cas ´ech´eant, r´ecup´erez
les sources d´ej`a compl´et´ees.
Exercice 2
R´ecup´erez les sources Annuaire.java (ne vous occupez pas des classes Loader et Chrono
d´efinies en bas du fichier).
Une m´ethode pour charger un annuaire `a partir d’un fichier texte est d´ej`a impl´ement´ee.
Divers annuaires sont disponibles au mˆeme endroit. Vous les utiliserez dans la suite pour
tester vos m´ethodes.
1. ´
Ecrire une m´ethode void affiche() affichant l’annuaire.
On rappelle que la comparaison de 2 chaˆınes de caract`eres se fait de la mani`ere suivante :
if (s.equals(t)) ...
2. ´
Ecrire une m´ethode public void numero(String nom) qui affiche les pr´enoms et num´eros
de toutes les personnes portant le nom indiqu´e. Quelles-sont les complexit´es dans le
meilleur et dans le pire des cas de cet algorithme ?
3. ´
Ecrire une m´ethode public Abonne abonne(Telephone tel) renvoyant l’abonn´e corres-
pondant au num´ero de t´el´ephone, ou null s’il n’y a pas d’abonn´e correspondant. Quelles-
sont les complexit´es dans le meilleur et dans le pire des cas de cet algorithme ?
4. Les versions tri´ees des annuaires sont ´egalement disponibles. Impl´ementez un algorithme
Abonne dicho(Telephone tel) effectuant une recherche par dichotomie de l’abonn´e cor-
respondant au num´ero de t´el´ephone sur un annuaire tri´e. Quelles-sont les complexit´es
dans le meilleur et dans le pire des cas de cet algorithme ? Quelle sont les avantages et
inconv´enients de cette m´ethode par rapport `a la pr´ec´edente ?
Exercice 3
1. En utilisant les commandes Chrono.start(); (d´emarer un chronom`etre) et Chrono.time();
(afficher le temps du chronom`etre en millisecondes), comparez empiriquement les vitesses
de abonne et dicho.
2. ´
Ecrire une m´ethode boolean estClasse() qui renvoie true si et seulement si l’annuaire
est class´e.
3. ´
Ecrire une m´ethode boolean doublon() qui renvoie true si et seulement si l’annuaire
contient 2 personnes ayant les mˆemes num´eros de t´el´ephone.
1
1 / 1 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !