Info-PCSI2
N. Véron-LMB-14-15
3 Recherche d’un élément dans une liste
Entrée : Une liste L, une valeur x
N
longueur de la liste
Réponse
Faux
k
0
Tant que k < N et L(k) x
k
k+1
FindeTantque
Si k ≤ N alors
Réponse
Vrai
FindeSi
Afficher réponse
Ce qui donne en Python
N = len(L)
Rep = False
k = 0
while k < N and x != L[k]:
#très important le and est paresseux aussi le deuxième test n’est pas
effectué si le premier est faux ce qui évite d’être en dehors des bornes de
la liste
k = k+1
if k < N
Rep = True
print(Rep)
On peut aussi écrire une fonction et utiliser le fait que la commande return met fin à l’exécution
du script.
def recherche(L,x) :
k=0
while k<len(L) :
if L[k]==x:
return true
k=k+1
return false
On peut aussi utiliser une boucle for puisque la commande return a l’effet d’un break
def recherche(L,x) :
for element in L:
if L[k]==x:
return true
return false
Au pire des cas, c’est à dire lorsque x n’est pas dans la liste, ce programme effectue N
itérations. Pour faire mieux on propose de partir d’un tableau trié et de faire une recherche
dichotomique.
Entrée : L une liste triée, x une valeur
Réponse
Faux
g
0
d
longueur de la liste - 1
m
le quotient de (a + b) par 2
Tant que g ≤ d et L[m] x faire
Si x > L[m]
g
m+1
Sinon
d
m-1
FindeSi