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