Adloun

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

Faire l'exercice suivant avec le tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →