|
L'algoritmo di ricerca binaria function Ricerca(V: Vettore; N: Integer; K: Elemento): Integer; Var INF, SUP, MEDIO: Integer; ANCORA: Boolean; begin INF:=1; SUP:=N; ANCORA:=True; while(INF <= SUP) And (ANCORA) do begin MEDIO:=(INF+SUP) Div 2; if(V[MEDIO] < K) then INF:=MEDIO+1 else if(V[MEDIO] = K) then ANCORA:=False else SUP:=MEDIO-1; end; if(ANCORA) then Ricerca:=0 else Ricerca:=MEDIO; end; Possiamo concludere, come prima, che
e trascurare i conteggi. I calcoli per T danno
Quanto vale m? La dimensione del vettore sul quale si effettua la ricerca volta per volta č
Quando la potenza di 2 a denominatore raggiunge N il ciclo while() termina sicuramente, cioč quando
quindi nel caso pessimo
Esempi numerici
Ipotizzando, pessimisticamente, che i coefficienti siano molto sfavorevoli per la ricerca binaria, per esempio
calcoliamo i tempi di attesa al variare di n
Anche in questa situazione di svantaggio l'algoritmo di ricerca binaria si comporta meglio se applicato ad appena 200 elementi! |
|