diff --git a/algorithmique/recursivite/recherche.algo b/algorithmique/recursivite/recherche.algo new file mode 100644 index 0000000..62b06b2 --- /dev/null +++ b/algorithmique/recursivite/recherche.algo @@ -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 diff --git a/algorithmique/recursivite/recherche.py b/algorithmique/recursivite/recherche.py new file mode 100644 index 0000000..938975d --- /dev/null +++ b/algorithmique/recursivite/recherche.py @@ -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()