From 32c04bd0308eafd2b4828217d7d219214966ca1b Mon Sep 17 00:00:00 2001 From: Florian Mathieu Date: Wed, 30 Mar 2022 14:58:47 +0200 Subject: [PATCH] ajout dichotomie --- algorithmes/DICHOTOMIQUE.md | 45 ++++++++++++++++++++++++++++++ algorithmes/assets/dichotomie.png | Bin 0 -> 5067 bytes 2 files changed, 45 insertions(+) create mode 100644 algorithmes/DICHOTOMIQUE.md create mode 100644 algorithmes/assets/dichotomie.png diff --git a/algorithmes/DICHOTOMIQUE.md b/algorithmes/DICHOTOMIQUE.md new file mode 100644 index 0000000..fa2ceba --- /dev/null +++ b/algorithmes/DICHOTOMIQUE.md @@ -0,0 +1,45 @@ +> Après avoir vu le parcours séquentiel d'un tableau dans le but de trouver un élèment, on va pouvoir voir une méthode bien plus efficace dans le cas d'une liste triée, **la recherche dichotomique.** + +### Le programme + +![bo_dichotomique](assets/bo_dichotomique.png) + +----------- + +### Etymologie + +Le mot dichotomie vient du grec ancien +$$ +dikhotomia +$$ +qui signifie ***couper en deux*** + +------------- + +### Problème de base + +Supposons un tableau tab : + +```python +tab = [1,2,6,9,12,14,18,21,42] +``` + +Si on souhaite chercher un élèment, par exemple 7, en utilisant le [parcours séquentiel](PARCOURS.md) on fonctionne par balayage (avec une boucle for...) et donc parcourir la liste du début à la fin en colparant chaque valeur à l'élèment recherché. + +Ici par exemple, on effectuerait 9 comparaison pour finir par dire que non, 7 n'est pas présent. + +Dans le cas d'une liste **déjà triée**, la recherche dichotomique permet d'améliorer les performances. + +----------- + +### Principe + +- Si le tableau est vide, on renvoie False, la recherche est terminée. +- Sinon, on trouve la valeur la plus *centrale* du tableau et on la compare avec l'élément recherché : + - si la valeur est celle qu'on recherche, on renvoie True, la recherche est terminée. + - si la valeur est plus petite que l'élèment recherché, on recommence la procédure avec la seconde moitié du tableau. + - si la valeur est plus grande que l'élément recherché, on recommence avec la première moitié du tableau. + +![dichotomie](assets/dichotomie.png) + +Par Tushe2000 — Template:LoStrangolatore, Domaine public, https://commons.wikimedia.org/w/index.php?curid=39675138 \ No newline at end of file diff --git a/algorithmes/assets/dichotomie.png b/algorithmes/assets/dichotomie.png new file mode 100644 index 0000000000000000000000000000000000000000..209824cc844c1e0bbbf9450d042d831438f3fc64 GIT binary patch literal 5067 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