• Aucun résultat trouvé

Recherchedansuneliste Algorithmesdichotomiques(1)–TP

N/A
N/A
Protected

Academic year: 2022

Partager "Recherchedansuneliste Algorithmesdichotomiques(1)–TP"

Copied!
2
0
0

Texte intégral

(1)

ALGORITHMES DICHOTOMIQUES(1) TP

Algorithmes dichotomiques (1) – TP

10

Les deux questions (Pour aller plus loin) sont à faire en DNS pour le mardi 04 janvier 2022.

Recherche dans une liste

Étant donnés une listeL et une valeurx, on veut écrire une fonction qui, si xest dans la liste, renvoie le booléenTrueet, sinon, renvoie le booléenFalse.

Recherche linéaire

Une première méthode consiste à parcourir la liste L du premier au dernier élément, jusqu’à éventuellement rencontrer la valeurx.

1. Écrire une fonctionrechercheLineaire(L,x)qui utilise la méthode naïve. Elle prend en paramètre une listeL et une valeur x.

2. Compter le nombre maximal de comparaisons effectuées par la fonctionrechercheLineaire(L,x).

3. (Pour aller plus loin) Modifier votre fonction pour qu’elle renvoie le premier indice oùxapparaît dansL, si xest bien dans la liste, et renvoie−1 sinon.

Recherche dichotomique

Dans cette partie, on considère unelisteLtriée dans l’ordre croissant de nombres réels. On cherche alors à déterminer si un élémentxest dans la listeL, de longueurn, par une autre méthode, larecherche dichotomique.

La recherche dichotomique repose sur le principe suivant :

a. On considère l’élémentyd’indicen//2 (celui qui se trouve « au milieu » de la liste).

b. On compare l’élémentyà la valeur dex:

• Si l’élément yest égal àx, la valeur recherchée est dans la liste ;

• Si xest strictement inférieur à l’élément y, on cherche xparmi les éléments d’indice 0 àn//2 exclu.

• Si xest strictement supérieur à l’élémenty, on cherchexparmi les éléments d’indicen//2 exclu ànexclu.

c. On recommence les étapes a. et b. jusqu’à ou bien trouver la valeur x, ou bien ne plus avoir d’élément à comparer.

Pour mettre en place ce principe, on propose l’algorithme suivant à compléter.

Algorithme 1 :Recherche dans une liste triée

Données :xun réel etLune liste de réels triée par ordre croissant Sorties :Truesixest dansLetFalsesinon

Traitement :

1 g←0 ;

2 d←longueur deL−1 ;

3 tant que g<=dfaire

4 m←quotient dans la division euclidienne deg+dpar 2 ;

5 six=L[m]alors

Renvoyer :...

6 sinon si...alors

7 d←m−1;

8 sinon

9 g←m+1;

Renvoyer :...

G. BOUTARD 1 Lycée GAY-LUSSAC

(2)

TP ALGORITHMES DICHOTOMIQUES(1)

1. Compléter l’algorithme donné en pseudo code. Que représentegetd? 2. Sur feuille, appliquer l’algorithme avec

L=[0, 5, 8, 12, 18, 22, 23, 30] et x=27

3. Implémenter l’algorithme en Python. On appellerarechercheDichotomie(L,x)la fonction.

4. Modifier la fonctionrechercheDichotomie(L,x)pour qu’à chaque itération elle affiche la sous liste des éléments d’indices compris entre getd.

5. (Pour aller plus loin) Modifier la fonctionrechercheDichotomie(L,x)pour qu’elle renvoie un indiceitel que L[i]=xsixest dans la liste et renvoie−1 sinon.

6. Dans cette question, on considère que la longueur de la liste estn=2p. Compter le nombre maximal de comparai- sons effectuées. Comparer avec la recherche linéaire. Conclure.

PCSI 2021 – 2022 2 G. BOUTARD

Références

Documents relatifs

Traer le graphe de f et vérier que f est bien une densité de

[r]

Il est donc important de protéger ces cellules et même aller plus loin en les protégeant à l’aide d’un mot de passe, ce qui n’est pas obligatoire... Le tableur calc : Pour

[r]

En d´ eduire que la suite (f n ) n∈ N converge uniform´ ement vers une fonction f continue et croissante..

Montrer que les points M 1 et M 2 varient sur un même cercle dont on précisera le centre et le rayon.. Etudier la dérivabilité de f à droite en 0 et interpréter graphiquement

Travailler la résolution de problèmes en classe à partir d’Ateliers de Compréhension.

Décomposer chaque nombre compris entre 3 et 31 en somme de puis- sances de 2 en utilisant le document : la somme des nombres présents dans les disques colorés doit être égale au