Initiation à la programmation ENSAE 1A

seance2_boucle_test_var_cor.tex

recherche de la position d'un élément

l = [ 3, 6, 2 , 7, 9 ]
x = 7

for i,v in enumerate(l) :
    if v == x :
        position = i

print ( position )

recherche dichotomique de la position d'un élément

# coding:latin-1
l = [2, 3, 6, 7, 9]
# si la liste n'est pas triée, il faut écrire : 
l.sort ()
x = 7

a = 0
b = len(l)-1
while a <= b :
    m = (a+b)//2  # ne pas oublier // sinon la division est réelle
    if l[m] == x : 
        position = m   # ligne A
        break
    elif l[m] < x :
        a = m+1
    else :
        b = m-1

print ( position )

# si le nombre qu'on cherche x n'est pas dans la liste,
# le programme produit l'erreur suivante car la ligne A n'est jamais exécutée :
"""
Traceback (most recent call last):
  File "seance2_recherche_dicho.py", line 19, in <module>
    print ( position )
NameError: name 'position' is not defined
"""
# soit n la longueur de la liste l
# le coût d'une recherche simple est en O(n)
# le coût d'une recherche dichotomique est en O(ln(n))