Informatique Cours S1.10 Algorithmes et listes
Lycée Jules Ferry Cannes Page 4 sur 5 TSI1
4 Recherche dans un tableau trié
Dans le cas d'un tableau trié, un algorithme de recherche par dichotomie est statistiquement plus
rapide qu'un algorithme itératif depuis la première valeur de la liste jusqu'à la !
"
valeur.
L'idée de l'algorithme de recherche par dichotomie dans une liste triée est de diviser par 2 la taille
de la liste à chaque itération.
On utilise ainsi 3 pointeurs de liste :
- pointeur gauche
g : début de la liste
,
- pointeur droit
d : fin de la liste
,
- pointeur du milieu
k=(g+d)/2
.
La recherche est terminée lorsque le pointeur gauche et le pointeur droit sont égaux :
g=d
Algorithme Recherche dichotomique
Entrées : élément x et liste L
Sortie : s=Vrai si x est dans L et Faux sinon
n Nombre d'éléments de L
g 0
d n-1
k (g+d) div 2
Tant que g#$ d Faire
Si L[k]<x Alors
g k+1
Sinon :
Si L[k]>x Alors
d k
Sinon :
d k
g k
Fin Si
k (g+d) div 2
Fin Tant que
Si L[g]=x Alors
s True
Sinon
s False
Fin Si
Renvoyer s
Fin de Recherche dichotomique
def Recherche_dichotomique (L,x):
# Entrée : liste L, x élément cherché
# Sortie : s=True si x dans L et False sinon
n=len(L)
g=0 # premier indice de L : 0
d=n-1 # dernier indice de L : n-1
k=(g+d)//2 # dichotomie
while g!=d:
if L[k]<x: # x est à droite du milieu
g=k+1
else:
if L[k]>x: # x est à gauche du milieu
d=k
else: # x est au milieu
g=k
d=k
k=(g+d)//2
if L[g]==x: # Affectation de la sortie
s=True
else:
s=False
return s
Appel de la fonction Recherche_dichotomique :
>>> liste_triee=[10, 30, 0]
>>> Recherche_dichotomique(liste_triee,30)
True
Un algorithme itératif nécessite au plus
n
itérations (valeur trouvée au dernier élément de la liste)
Un algorithme par dichotomie nécessite au plus
%&
'(
itérations ()
*
+ , )
*
)
Exemple pour 10 000 éléments : %&
'-....( -/ itérations…c'est plus rapide que 10000.
Références : Patrick Beynet –UPSTI-