NSI (première) · Chapitre 8 · Exercice de TD
Combien de tours au maximum pour un tableau de éléments
Dichotomie, voisins et gloutons · La recherche dichotomique · niveau 2
Énoncé
Combien de tours au maximum pour un tableau de éléments ? de ? Répondre avec le nombre de bits du chapitre 1, puis vérifier la réponse en comptant les tours pour toutes les valeurs cherchées.
Corrigé
La réponse théorique. Le nombre de tours du pire cas est , c'est-à-dire le nombre de bits de : pour , pour , pour .
La vérification, qui n'est pas une reformulation.
def tours_max(n):
"""Nombre de tours du pire cas, MESURE sur toutes les valeurs possibles."""
t = list(range(n))
pire = 0
for v in range(-1, n + 1): # toutes les presentes ET deux absentes
_, trace = dichotomie_tracee(t, v)
pire = max(pire, len(trace))
return pire
for n in [1, 2, 3, 7, 8, 100, 1000, 1024]:
assert tours_max(n) == n.bit_length()
assert (10**6).bit_length() == 20
assert (10**9).bit_length() == 30
La boucle essaie toutes les valeurs, présentes comme absentes : c'est ce qui en fait une mesure du pire cas et non d'un cas particulier. Le résultat coïncide exactement avec n.bit_length() — la fonction du chapitre 1, retrouvée ici par un tout autre chemin. Ce n'est pas une coïncidence : diviser par deux jusqu'à atteindre , c'est compter les chiffres binaires.
Le contraste avec la recherche séquentielle vaut d'être dit en une phrase : passer de à éléments multiplie le travail séquentiel par mille, et fait passer la dichotomie de à tours.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 16 autres exercices corrigés dans ce chapitre, et 20 à chercher avec le tuteur
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.