Informatique - DEGEAD 2 Universit´e Paris-Dauphine
TD - Algorithmes de recherche d’un ´ el´ ement
Exercice 1 : Recherche s´equentielle
Q 1.1Ecrivez une fonctionRechSeqqui, ´etant donn´ee une plage de cellules et un ´el´ementx, retourne vrai si x est pr´esent dans la plage, et faux sinon. On cherche `a minimiser le nombre d’op´erations effectu´ees parRechSeq.
Q 1.2 Modifiez la fonction pr´ec´edente pour le cas o`u l’´el´ement x est dans la plage de cellules. Dans ce cas, votre fonction retourne la ligne et la colonne du premier ´el´ementxrencontr´e. Comme pr´ec´edemment, votre fonction retourne faux sixn’est pas dans la plage.
Q 1.3 Ecrivez la macro de test deRechSeq qui recherche le mot ”Hello” dans la plage L1C3 :L45C10.
Q 1.4 Ecrivez la fonction CpteElt qui, ´etant donn´es une plage de cellules et un ´el´ement x, compte le nombre de fois que xapparaˆıt dans la plage.
Q 1.5 Quel est le nombre d’op´erations effectu´ees par RechSeq si xest pr´esent dans la plage de cellules dans le meilleur des cas et dans le pire des cas ? Et quel est le nombre d’op´erations effectu´ees parRechSeq sixn’est pas dans la plage de cellules ? On estime qu’il y a une chance sur deux que xsoit pr´esent dans la plage de cellules ; quel est le nombre moyen d’op´erations effectu´ees par RechSeq? Et qu’en est-il si la probabilit´e quexsoit pr´esent dans la plage estp?
Mˆemes questions pourCpteElt.
Exercice 2 : Recherche d’un nombre dans une collection tri´ee
On suppose que les ´el´ements sont dispos´es dans une colonne de la feuille de calcul en ordre d´ecroissant.
Q 2.1 Ecrivez la fonction RechDicho qui, ´etant donn´es un ´element x, un num´ero de colonne co, un num´ero de d´ebut de ligne det de fin de ligne f, recherche si l’´el´ement x figure dans la colonneco de la ligne d `a la ligne f en appliquant une recherche dichotomique. Si x est pr´esent, la fonction RechDicho retourne la position du premier xrencontr´e, sinon elle retourne -1.
Q 2.2 Quel est le nombre d’op´erations effectu´ees par RechDicho si x est dans la colonne des ´el´ements examin´es dans le meilleur des cas et dans le pire des cas ? Et quel est le nombre d’op´erations effectu´ees parRechDicosi xn’est pas pr´esent dans la colonne ?