Adloun

algorithmique (école d'ingénieur) · Chapitre 12 · Application directe du cours

Dérouler une dichotomie

Recherche séquentielle, dichotomique, arrière · niveau 1 (application)

Énoncé

On reprend la fonction premierIndice du cours et le tableau .

  • Donner les valeurs successives de , et lors de l'appel premierIndice(S, 3), puis la valeur retournée.
  • Même question pour premierIndice(S, 7). Que signifie la valeur retournée, alors que n'est pas dans ?
  • Vérifier l'invariant à la fin de chacun des deux appels.

Corrigé

  • Avec , le programme Dichotomies.java affiche :

g=0 d=8 m=4 T[m]=6
g=0 d=4 m=2 T[m]=3
g=0 d=2 m=1 T[m]=3
g=0 d=1 m=0 T[m]=1
fin : g=d=1

Chaque fois que , on pose ; seule la dernière comparaison () fait avancer . La fonction retourne : c'est la première occurrence de .

  • Avec :

g=0 d=8 m=4 T[m]=6
g=5 d=8 m=6 T[m]=11
g=5 d=6 m=5 T[m]=8
fin : g=d=5

La fonction retourne : c'est la position d'insertion de , l'indice de la première valeur supérieure ou égale à (). On en déduit que n'est pas dans , puisque .


nom : S
valeurs : 1 3 3 3 6 8 11 15
griser : 0..4
colorier : 6
pointeurs : g=5 m=6 d=8
legende : x = 7, tour 2 : T[4] = 6 < 7 a écarté T[0:5]

nom : S
valeurs : 1 3 3 3 6 8 11 15
griser : 0..4 6..7
colorier : 5
pointeurs : g=5 m=5 d=6
legende : x = 7, tour 3 : T[6] = 11 ≥ 7 a écarté T[6:8]
  • Pour , : et . Pour , : et . Dans les deux cas l'invariant est vrai et la zone d'incertitude est vide.

nom : S
valeurs : 1 3 3 3 6 8 11 15
pointeurs : g=5 d=5
zone : 0..4 < 7
zone : 5..7 au moins 7
legende : x = 7 : g = d = 5, la zone d'incertitude est vide

Il y a eu puis tours de boucle, soit au plus : la zone est au moins divisée par deux à chaque tour.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →