Ecole Nationale d'ingénieurs de Sfax A.U 2013/2014 Responsable du cours : M. Sofien Khemakhem Auditoire : GI1 Travaux Dirigés N°2 ALGORITHMIQUE ET COMPLEXITE Exercice1 : Soit la fonction mystere(t, k) ou t est un tableau d'entiers non vide et k verifiant 0≤k≤ longeur(t) Fonction mystere(t,k) : Boolean debut si k= longeur(t)­1 alors retourner vrai si t[k]>t[k+1] alors retourner faux retouner mystere (t,k+1) fin (a) Soit t= [6, 9, 4, 8, 12] i : Que retourne mystere(t, 2) (Donner la liste des appels recursifs) ? ii :Que retourne mystere(t, 0) (Donner la liste des appels recursifs) ? iii : Que fait la fonction mystere dans le cas general ? (b) Quel est le nombre maximum d'appels recursifs (en fonction de n et k ) de la fonction mystere(t,k) si le tableau t est de longueur n? (c) En vous inspirant de la fonction mystere, ecrire une fonction recursive estDans(t,x, k) qui retourne True si x apparait dans le tableau t a partir de l'indice k, False sinon. Exercice2 : On considère la procédure suivante qui permet d’inverser les éléments d’un tableau de taille n : procedure Inverser (var T : tableau, n : integer) ; var i, k, x : integer ; begin k := n div 2; for i:= 1 to k do begin x:= T[i]; T[i] := T[n-i+1]; T[n-i+1] :=x; end; 1/2 end; Donnez une version récursive de cette procédure et calculez la complexité de la version récursive. Exercice3 : La recherche binaire d’un élément v dans un tableau trié d’entiers se fait de la façon suivante : On compare v avec l ‘élément au milieu m (cet élément divise le tableau en deux parties : une première partie dont les éléments sont inférieurs ou égaux à m, et une deuxième partie dont les éléments sont strictement supérieurs à m) ♦ Si v est inférieur ou égal à m, alors la recherche se poursuit de la même manière dans la première partie du tableau. ♦ Si v est strictement supérieur à m, alors la recherche se poursuit de la même manière dans la deuxième partie du tableau. 1. Ecrivez une fonction non récursive qui retourne la position de v dans le tableau si v est trouvé, et 0 sinon. Cette fonction a trois paramètres seulement : le tableau T, sa taille N et l’entier à chercher v. 2. Ecrivez une version récursive de cette fonction 3. Déterminez la complexité de cette fonction et justifiez votre réponse. 2/2