PCSI – IPT G. Monod
TP_Recherche_dichotomique.docx
1/2
TP Python Recherche dichotomique dans un tableau trié
Recherche d’un entier dans un tableau trié par dichotomie
Programme officiel
Les méthodes de recherche précédentes étaient des méthodes séquentielles : on parcourt le tableau à partir du 1
er
élément
jusqu’à trouver l’élément cherché. On conçoit donc que dans le cas de tableaux très grands (annuaire téléphonique…), la recherche
peut être très longue.
La méthode de recherche dichotomique relève du principe « diviser pour régner » : à chaque étape, on divise par 2 la taille du
tableau dans lequel on effectue la recherche. Elle est donc beaucoup plus rapide que la recherche séquentielle. Inconvénient : elle
nécessite un tableau trié (les algorithmes de tris sont au programme de seconde année). Néanmoins l’ensemble des deux
opérations reste plus rapide qu’une recherche séquentielle.
Résumé de l’algorithme de recherche dichotomique : à chaque étape, on compare l’entier cherché x à la valeur centrale du
tableau M. Trois situations se présentent alors :
1) x = M : la recherche est terminée ;
2) x < M : la recherche doit se poursuivre dans la moitié gauche du tableau ;
3) x > M : la recherche doit se poursuivre dans la moitié droite du tableau.
On ne cherche pas ici à trier le tableau, il doit être fourni trié.
Savoir-faire - Recherche d’un algorithme
Grandeurs d’entrée de l’algorithme : la liste triée L et x l’élément cherché (L = [4, 5, 7, 25, 32, 50, 51, 60] et x = 51 dans
l’exemple ci-dessous).
Grandeurs de sortie de l’algorithme : position (index) de x si x est présent dans la liste (6 dans l’exemple ci-dessous) False
sinon.
Méthode : dichotomie = diviser pour régner
Variables : g, d et m les index des extrémités et du milieu de la liste. Ces variables sont modifiées au cours de l’algorithme.
Structure principale : boucle while car le nombre d’itérations est inconnu
⇒
critère d’arrêt ?
→
Observer l’évolution des variables g et d : quand la boucle doit-elle se terminer ?
Remplir le tableau ci-dessous en indiquant les valeurs des index g, d, m (index de la valeur M) :
Liste triée L
[ 4, 5, 7, 25, 32, 50, 51, 60 ]
Index
0 1 2 3 4 5 6 7
Variables
Initialisation g = d =
Boucle 1
Boucle2
Boucle 3
Écrire l’algorithme détaillé en pseudo-code (français/informatique) : initialisations des variables de stockage (quelles valeurs
doit-on mémoriser ?), la boucle principale avec ses tests, valeurs retournées.
Bien réfléchir aux bornes