L'algoritmo di ricerca sequenziale con sentinella
Function RicSent(V: Vettore; N: Integer; K: Elemento): Integer;
Var
I: Integer;
Begin
I:=1; (1)
V[N+1]:=K; (1') (1'')
While(V[I] <> K) do (4)
I:=I+1; (5) (6)
If(I > N) then (7)
RicSent:=0 (8)
Else
RicSent:=I (9)
End;
Ripetendo i conteggi otteniamo
T = T1+T1'+T1''+[T4+T5+T6]x+T4+T7+T8|9= 6+3x
e quindi
| Vettore vuoto: T1+T1'+T1''+T4+T7+T8 = 6 |
| Elemento in 1° posizione: T1+T1'+T1''+T4+T7+T9 = 6 |
| Elemento in 2° posizione: T1+T1'+T1''+(T4+T5+T6)+T4+T7+T9 = 6+3 = 9 |
| Elemento in 2° posizione: T1+T1'+T1''+(T4+T5+T6)+(T4+T5+T6)+T4+T7+T9 = 6+3*2 = 12 |
| ... |
| Elemento in ultima posizione: 6+3(n-1) |
| Elemento non presente: 6+3*n |
Caso ottimo
| Vettore vuoto, elemento in 1° posizione: T = 6 |
Caso pessimo
| Elemento non presente: T = 6+3*n |
Caso medio (con posizione da 1 a n...)
| T = 1/n*[6+(6+3)+(6+6)+...+6+3(n-1)] = 1/n*[6n+3(n-1)n/2 = 6+3(n-1)/2 = 4.5+1.5n = c1'+c2'n |
I coefficienti della funzione lineare diventano più vantaggiosi (tranne che nei casi banali…) |