Cours : Recherche Séquentielle avec Sentinelle

1) Objectif

La recherche séquentielle consiste à parcourir un tableau du début à la fin pour retrouver un élément x. La version avec sentinelle est une amélioration : on ajoute une case supplémentaire à la fin du tableau et on y place x. Ainsi, la boucle s’arrête toujours sans avoir besoin de tester “fin du tableau” à chaque tour.


2) Principe (idée de la sentinelle)

  • On a un tableau de N éléments : T[1..N]
  • On ajoute une case : T[N+1] appelée sentinelle
  • On met : T[N+1] ← x
  • On parcourt depuis 1 jusqu’à rencontrer x
  • Si on trouve x avant la sentinelle, alors x existait dans le tableau. Sinon, si on arrive à N+1, x n’était pas dans le tableau initial.

3) Algorithme en pseudo-code

Algorithme RechercheSentinelle
Const N = 6
Const M = N + 1
Var
  T : tableau[1..M] d'entier
  x : entier
  i : entier
Debut
  Ecrire("Entrer les ", N, " elements du tableau :")
  Pour i de 1 a N Faire
    Lire(T[i])
  FinPour

  Ecrire("Entrer l'element a rechercher :")
  Lire(x)

  T[M] <- x          // sentinelle
  i <- 1

  Tantque (T[i] <> x) Faire
    i <- i + 1
  FinTantque

  Si (i = M) Alors
    Ecrire("Element inexistant dans le tableau.")
  Sinon
    Ecrire("Element existant en position : ", i)
  FinSi
Fin

4) Explication de l’algorithme (comment ça marche)

  • On lit les éléments dans T[1..N].
  • On lit la valeur recherchée x.
  • On place x dans T[N+1] (la sentinelle). Comme ça, même si x n’est pas dans T[1..N], la boucle finira forcément quand elle atteindra T[N+1].
  • On commence à i = 1 et on avance tant que T[i] ≠ x.
  • À la fin :
    • Si i = N+1 ⇒ x n’était pas dans le tableau initial.
    • Sinon ⇒ x a été trouvé en position i.

5) Exécution manuelle sur un tableau de 6 éléments

Exemple A : x existe

Soit le tableau : T[1..6] = {12, 7, 25, 9, 30, 5}
On cherche x = 9.

On ajoute la sentinelle : T[7] ← 9

Déroulement :

  • i = 1 : T[1] = 12 ≠ 9 → i ← 2
  • i = 2 : T[2] = 7 ≠ 9 → i ← 3
  • i = 3 : T[3] = 25 ≠ 9 → i ← 4
  • i = 4 : T[4] = 9 = 9 → arrêt

Résultat : i = 4 (et i ≠ 7) donc 9 existe dans le tableau en position 4.


Exemple B : x n’existe pas

Même tableau : T[1..6] = {12, 7, 25, 9, 30, 5}
On cherche x = 100.

Sentinelle : T[7] ← 100

Déroulement :

  • i = 1 : 12 ≠ 100 → i ← 2
  • i = 2 : 7 ≠ 100 → i ← 3
  • i = 3 : 25 ≠ 100 → i ← 4
  • i = 4 : 9 ≠ 100 → i ← 5
  • i = 5 : 30 ≠ 100 → i ← 6
  • i = 6 : 5 ≠ 100 → i ← 7
  • i = 7 : 100 = 100 → arrêt

Résultat : i = 7 (= N+1), donc 100 est inexistant dans le tableau initial.


6) Pourquoi la sentinelle est “meilleure” ?

  • Sans sentinelle, on doit souvent écrire : Tantque (i ≤ N ET T[i] ≠ x) ...
  • Avec sentinelle, on écrit seulement : Tantque (T[i] ≠ x) ...
  • Donc le code est plus simple, et la boucle est plus rapide (moins de tests).

Questions / Réponses

Aucune question. Soyez le premier à poser une question.
Aucune note. Soyez le premier à attribuer une note !

Ajouter un commentaire

Anti-spam