efrei/algorithmique/recursivite/7.recherche.py

42 lines
861 B
Python
Raw Normal View History

#!/usr/bin/env python
"""Cherche un entier x dans un tableau T de n entiers"""
def main() -> None:
x = 5
T = [5, 6, 3, 1, 2, 7, 9, 10]
n = len(T)
print(RechSeq(x, T, n))
print(RechDic(x, T, n))
def RechSeq(x : int, T : list[int], n : int) -> bool:
"""Selon le principe de la recherche séquentielle"""
if n == 0:
return False
elif x == T[n - 1]:
return True
else:
return RechSeq(x, T, n - 1)
def RechDic(x : int, T : list[int], n : int) -> bool:
"""Selon le principe de la recherche dichotomique"""
T.sort()
milieu = n // 2
if len(T) == 0:
return False
elif x == T[milieu]:
return True
elif x < T[milieu]:
return RechDic(x, T[:milieu], milieu)
else:
return RechDic(x, T[milieu:], n - milieu)
if __name__ == "__main__":
main()