typo de part et d'autres
This commit is contained in:
@@ -24,9 +24,9 @@ Supposons un tableau tab :
|
||||
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é.
|
||||
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 comparant 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.
|
||||
Ici par exemple, on effectuerait 9 comparaisons 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.
|
||||
|
||||
@@ -60,13 +60,13 @@ Montrer le nombre d'étapes nécessaires à la réussite de cette recherche.
|
||||
| Recherche Dichotomique | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | log<sub>2</sub>N |
|
||||
|
||||
- Quel est le pire des cas ici ? Que l'élèment recherché ne soit pas dans le tableau.
|
||||
- Le nombre de tours de boucle de la recherche dichotomique est de l'ordrede log<sub>2</sub>(n) où *n* est la taille de la liste.
|
||||
- Le nombre de tours de boucle de la recherche dichotomique est de l'ordre de log<sub>2</sub>(n) où *n* est la taille de la liste.
|
||||
|
||||
*Explications*
|
||||
|
||||
Qu'est ce que le ***Logarithme***:
|
||||
|
||||
pour faire simple, le logarithme en base n - écrit log<sub>n</sub> correspond au nombre de division par n successive pour arriver au nombre 0.
|
||||
pour faire simple, le logarithme en base n - écrit log<sub>n</sub> correspond au nombre de divisions par n successives pour arriver au nombre 1.
|
||||
|
||||
***Exemple :***
|
||||
|
||||
@@ -110,27 +110,25 @@ La recherche dichotomique est donc de complexité ***logarithmique***.
|
||||
|
||||
Pour vérifier que la recherche dichotomique se termine bien, regardons ensemble son code python - on suppose que le tableau en entrée est déjà trié.
|
||||
|
||||
````python
|
||||
def dichotomique (tab, x):
|
||||
"""
|
||||
:param tab: tableau contenant différents élèments déjà triés
|
||||
:param x: élèment recherché
|
||||
"""
|
||||
a = 0 # on initialise la borne inférieure
|
||||
b = len(tab) - 1 # borne supérieure
|
||||
while a <= b: # tant que la borne inférieure est plus petite ou égale à la borne supérieure
|
||||
m = (a + b) // 2 # on se place au milieu du tableau
|
||||
if tab[m] == x: # si l'élément central est l'élément recherché
|
||||
return True # alors on a terminé
|
||||
elif tab[m] < x: # si l'élément central est plus petit que l'élément recherché
|
||||
a = m + 1 # on déplace la borne minimum vers la sous-partie droite du tableau
|
||||
else: #si l'élement central n'est ni plus petit ni égal à l'élément recherché, donc s'il est >...
|
||||
b = m - 1 #on déplace la borne supérieure vers la sous-partie gauche
|
||||
#si après tout ça on ne trouve pas l'élément...
|
||||
return False
|
||||
|
||||
|
||||
````
|
||||
```python
|
||||
def dichotomique(tab, x):
|
||||
"""
|
||||
:param tab: tableau contenant différents élèments déjà triés
|
||||
:param x: élèment recherché
|
||||
"""
|
||||
a = 0 # on initialise la borne inférieure
|
||||
b = len(tab) - 1 # borne supérieure
|
||||
while a <= b: # tant que la borne inférieure est plus petite ou égale à la borne supérieure
|
||||
m = (a + b) // 2 # on se place au milieu du tableau
|
||||
if tab[m] == x: # si l'élément central est l'élément recherché
|
||||
return True # alors on a terminé
|
||||
elif tab[m] < x: # si l'élément central est plus petit que l'élément recherché
|
||||
a = m + 1 # on déplace la borne minimum vers la sous-partie droite du tableau
|
||||
else: # si l'élément central est plus grand que l'élément recherché
|
||||
b = m - 1 # on déplace la borne supérieure vers la sous-partie gauche
|
||||
# si après tout ça on ne trouve pas l'élément...
|
||||
return False
|
||||
```
|
||||
|
||||
-----------
|
||||
|
||||
|
||||
Reference in New Issue
Block a user