Structures de données et algorithmes

On effectue une recherche dichotomique parmi 1000 valeurs distinctes triées par ordre croissant. Si une comparaison indique si les valeurs sont égales, plus petites ou plus grandes, quel est le nombre maximal de comparaisons, en comptant les recherches réussies comme infructueuses ?

  1. A10
  2. B32
  3. C500
Afficher la réponse et l'explication

Réponse : A. 10

Chaque comparaison réduit l'intervalle de recherche de moitié environ, et 2¹⁰ = 1024 ≥ 1000 : l'intervalle est donc épuisé en 10 comparaisons au plus (⌊log₂ 1000⌋ + 1 = 10). La complexité temporelle est en O(log n), et même 1 million de valeurs ne demandent que 20 comparaisons au plus. 32 correspond à √1000 ≈ 31,6, et 500 est proche de la moyenne d'une recherche linéaire (environ n/2). Il faut toutefois garder à l'esprit que la recherche dichotomique exige des données triées, et que le tri lui-même coûte O(n log n).

S'entraîner sur ce thème Retour au thème

Autres questions sur Structures de données et algorithmes

  1. 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 ?
  2. On trie par ordre croissant le tableau 5, 3, 8, 1, 4 avec le tri à bulles. Quel est le tableau après une passe, au cours de laquelle les éléments voisins sont comparés du début jusqu'à la fin et échangés chaque fois que celui de gauche est le plus grand ?
  3. On trie par ordre croissant le tableau 29, 10, 14, 37, 13 avec le tri par sélection, qui cherche le minimum de la partie non triée et l'échange avec le premier élément de cette partie. Quel est le tableau après deux répétitions de cette étape ?
  4. On trie par ordre croissant un tableau de 10 éléments avec le tri par insertion. Chaque élément à partir du deuxième est extrait et comparé aux éléments situés à sa gauche, en commençant par son voisin de gauche, jusqu'à trouver un élément inférieur ou égal ou jusqu'à atteindre le début. Combien de comparaisons sont effectuées quand le tableau est déjà dans l'ordre croissant, et quand il est dans l'ordre décroissant ?
  5. Quel algorithme de tri a une complexité temporelle en O(n log n) même dans le pire cas et trie presque sans mémoire supplémentaire, comme un tableau de travail ?