Structures de données et algorithmes

Une recherche linéaire compare un à un, depuis le début, les éléments d'un tableau de 100 valeurs distinctes pour trouver une valeur cible. Si la cible se trouve toujours dans le tableau et a la même probabilité d'être à n'importe quelle position, quel est le nombre moyen de comparaisons ?

  1. AEnviron 7
  2. B50,5
  3. C100
Afficher la réponse et l'explication

Réponse : B. 50,5

Si la cible est à la position k, la recherche effectue k comparaisons ; la moyenne vaut donc (1 + 2 + … + 100) / 100 = 50,5, soit (n + 1)/2 en général. Le meilleur cas (cible en tête) demande 1 comparaison et le pire cas (cible à la fin) 100 ; la moyenne comme le pire cas sont proportionnels à n, d'où une complexité temporelle en O(n). Environ 7 correspond à log₂ 100 ≈ 6,6, le nombre d'étapes d'une recherche dichotomique, qui n'est utilisable que si les données sont triées.

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

Autres questions sur Structures de données et algorithmes

  1. Par rapport à un tableau, quelle description d'une liste chaînée (liste dont chaque élément contient un pointeur vers l'élément suivant) est correcte ?
  2. Sur une pile vide, on effectue dans cet ordre les opérations push 1, push 2, pop, push 3, push 4, pop, pop. Dans quel ordre les valeurs sont-elles retirées par pop ?
  3. On ajoute dans cet ordre les éléments A, B et C à une file d'attente vide. Ensuite, on retire un élément, on ajoute D et on retire un élément, puis on ajoute E et on retire un élément. Dans quel ordre les éléments sont-ils retirés ?
  4. On évalue l'expression « 3 4 + 2 * 5 − » écrite en notation polonaise inverse (notation postfixée) en empilant chaque nombre sur une pile et, pour chaque opérateur, en retirant deux valeurs, en calculant le résultat et en l'empilant à nouveau. Quel est le résultat ? L'opérande gauche d'un opérateur est la valeur empilée la première.
  5. Quelle description d'une collision dans une table de hachage est correcte ?