Structures de données et algorithmes
Une recherche dichotomique cherche 38 dans le tableau croissant a[0] à a[9] = 3, 8, 12, 17, 23, 31, 38, 45, 52, 60. L'intervalle de recherche commence avec lo = 0 et hi = 9, et la position du milieu vaut (lo + hi) ÷ 2 arrondi à l'entier inférieur. Quelle liste donne, dans l'ordre, les éléments comparés à 38 ?
- A23, 38
- B31, 52, 45, 38
- C23, 45, 31, 38
Afficher la réponse et l'explication
Réponse : C. 23, 45, 31, 38
D'abord, (0 + 9) ÷ 2 = 4 : 38 est comparé à a[4] = 23 ; 38 est plus grand, donc lo = 5. Ensuite, (5 + 9) ÷ 2 = 7 : il est comparé à a[7] = 45 ; 38 est plus petit, donc hi = 6. Puis (5 + 6) ÷ 2 = 5 donne a[5] = 31, donc lo = 6, et enfin a[6] = 38 correspond. Cela fait 4 comparaisons, le maximum pour 10 éléments, ⌊log₂ 10⌋ + 1 = 4. L'ordre 31, 52, 45, 38 résulte d'un arrondi du milieu à l'entier supérieur, ce qui n'est pas la règle donnée dans la question.
Continuer : 9 autres questions sur Structures de données et algorithmes