Add recherche séquencielle et dichotomique
This commit is contained in:
parent
cd77f04cdd
commit
b7d11663d0
2 changed files with 70 additions and 0 deletions
29
algorithmique/recursivite/recherche.algo
Normal file
29
algorithmique/recursivite/recherche.algo
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
Algorithme : Cherche un entier x dans un tableau T de n entiers
|
||||||
|
|
||||||
|
Début
|
||||||
|
// Selon le principe de la recherche séquentielle
|
||||||
|
Fonction RechSeq(x : int, T : tableau, n : int) : bool
|
||||||
|
Si n = 0
|
||||||
|
Retourner(Faux)
|
||||||
|
Sinon si x = T[n - 1]
|
||||||
|
Retourner(Vrai)
|
||||||
|
Sinon
|
||||||
|
Retourner(RechSeq(x, T, n - 1))
|
||||||
|
FinSi
|
||||||
|
FinFonction
|
||||||
|
|
||||||
|
// Selon le principe de la recherche dichotomique
|
||||||
|
Fonction RechDic(x : int, T : tableau, n : int) : bool
|
||||||
|
Trier(T)
|
||||||
|
milieu = n / 2
|
||||||
|
Si Longueur(T) = 0
|
||||||
|
Retourner(Faux)
|
||||||
|
Sinon si x = T[milieu]
|
||||||
|
Retourner(Vrai)
|
||||||
|
Sinon si x < T[milieu]
|
||||||
|
Retourner(RechDic(x, T[0 : milieu], milieu))
|
||||||
|
Sinon
|
||||||
|
Retourner(RechDic(x, T[milieu : n], n - milieu))
|
||||||
|
FinSi
|
||||||
|
FinFonction
|
||||||
|
Fin
|
41
algorithmique/recursivite/recherche.py
Normal file
41
algorithmique/recursivite/recherche.py
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
#!/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()
|
Loading…
Reference in a new issue