Comment implémenter une recherche dichotomique dans une liste triée ?
En maintenant deux indices gauche et droite, en comparant l'élément médian, et en divisant l'intervalle par deux à chaque itération
L'objectif
Rechercher efficacement un élément dans une liste triée en réduisant de moitié l'intervalle de recherche à chaque itération.
Le principe
Si L est triée par ordre croissant et m = (g+d)//2, alors comparer L[m] à la cible v permet d'éliminer la moitié de l'intervalle : si v < L[m] on poursuit dans [g, m-1], sinon dans [m+1, d] ; le coût est en .
La méthode
- 1Je pose
gauche = 0etdroite = len(L) - 1, les bornes de l'intervalle de recherche. - 2Tant que
gauche <= droite, je calculem = (gauche + droite) // 2et je compareL[m]àv. - 3Si
L[m] == v, je renvoie l'indicem; siL[m] < v, je posegauche = m + 1; sinondroite = m - 1. - 4À la sortie de la boucle (intervalle vide), je renvoie
-1ouFalsepour signaler l'absence.
Exemple corrigé
Difficulté croissante de 1 à 3
Exercices aujourd'hui0 / 3
Prêt à t'entraîner ?
Génère un exercice personnalisé sur cette méthode et entraîne-toi avec la correction IA.