Ricerca sequenziale con sentinella

Si tratta di una versione leggermente migliorata dell’algoritmo di ricerca sequenziale.

Il confronto (i <= n) ripetuto a ogni passo può essere eliminato se si introduce la sentinella, la chiave della ricerca, alla prima posizione libera nell’array.

Il ciclo si chiude comunque nel caso in cui la chiave non esista.

Function Sentinella(V: Vettore; N: Integer; K: Real): Integer;
Var
    i: Integer;
Begin
    i:=1;
    V[N+1]:=K;
    While(V[i] <> K) Do
        i:=i+1;
    If(i > N) Then
        Sentinella:=0
    Else
        Sentinella:=i;
End;

Se l’array è ordinato si può introdurre un ulteriore miglioramento…

Function Sentinella(V: Vettore; N: Integer; K: Real): Integer;
Var
    i: Integer;
Begin
    i:=1;
    V[N+1]:=K;
    While(V[i] < K) do
        i:=i+1;
    If(i > N) Or (V[i] > K) Then
        Sentinella:=0
    Else
        Sentinella:=i;
End;