Select Git revision
recherche-dichotomie.py
recherche-dichotomie.py 1.73 KiB
from random import randint;
def dichotomie(liste, val):
print("La liste reçue : ",liste, ' de taille ', len(liste))
if liste==[] : return False
m=len(liste)//2
print('\ton compare liste[',m,']=', liste[m], ' et ', val)
if liste[m] == val: return True
elif liste[m] > val: return dichotomie(liste[:m], val) # dans liste[:m], liste[m] n'est pas inclu.
else: return dichotomie(liste[m+1:], val) # dans liste[X:], liste[X] est inclu.
ll=[randint(1,50) for i in range(10)]
ll.sort()
x=int(input("chercher une valeur entre 1 et 50 dans la liste " + repr(ll) + " ? : "))
print("La présence de ", x, " dans la liste : ", ll, dichotomie(ll, x))
"""
# Et un cas de succès :
chercher une valeur entre 1 et 50 dans la liste [4, 7, 10, 14, 19, 27, 31, 32, 35, 47] ? : 32
La liste reçue : [4, 7, 10, 14, 19, 27, 31, 32, 35, 47] de taille 10
on compare liste[ 5 ]= 27 et 32
La liste reçue : [31, 32, 35, 47] de taille 4
on compare liste[ 2 ]= 35 et 32
La liste reçue : [31, 32] de taille 2
on compare liste[ 1 ]= 32 et 32
La présence de 32 dans la liste : [4, 7, 10, 14, 19, 27, 31, 32, 35, 47] True
# Et un cas d'échec :
chercher une valeur entre 1 et 50 dans la liste [22, 23, 30, 33, 37, 42, 42, 43, 47, 49] ? : 35
La liste reçue : [22, 23, 30, 33, 37, 42, 42, 43, 47, 49] de taille 10
on compare liste[ 5 ]= 42 et 35
La liste reçue : [22, 23, 30, 33, 37] de taille 5
on compare liste[ 2 ]= 30 et 35
La liste reçue : [33, 37] de taille 2
on compare liste[ 1 ]= 37 et 35
La liste reçue : [33] de taille 1
on compare liste[ 0 ]= 33 et 35
La liste reçue : [] de taille 0
La présence de 35 dans la liste : [22, 23, 30, 33, 37, 42, 42, 43, 47, 49] False
"""