def milieu(i, j):
"""
i -- entier
j -- entier
renvoie le milieu entier de [i,j]
"""
return (i+j)//2
def dichotomieIllustree(valeur, tab):
"""
tab -- liste d'entiers, triée en ordre croissant
valeur -- entier
renvoie True si valeur est dans tab, False sinon.
La recherche est faite suivant le principe de dichotomie.
"""
copie = [x for x in tab]
while copie != []:
print("*"*30)
print(f"Je cherche {valeur} dans la liste {copie}.")
centre = milieu(0, len(copie)-1)
if copie[centre] == valeur:
print(f"L'élément d'indice {centre} est égal à {valeur}.")
return True
if copie[centre] < valeur:
print(f"L'élément d'indice {centre} a pour valeur {copie[centre]} < {valeur}.")
copie = [copie[k] for k in range(centre+1, len(copie))]
else:
print(f"L'élément d'indice {centre} a pour valeur {copie[centre]} > {valeur}.")
copie = [copie[k] for k in range(0, centre)]
return False
L = [2, 5, 6, 7, 8, 9, 10, 12]
dichotomieIllustree(8, L)
L = [-5, -2, 2, 5, 6, 7, 9, 10, 12, 14, 21, 23, 42]
dichotomieIllustree(8, L)