Complessità delle ricerche
Ricerca binaria


L'algoritmo
FUNZIONE binaria(IN REALE v[], IN REALE k): INTERO
INIZIO
   INTERO risp=-1,
          inf=0,
          sup=v.QUANTI-1,
          medio

   MENTRE(inf <= sup AND risp == -1)
      INIZIO
         medio=(inf+sup)/2
         SE(v[medio] < k) ALLORA
            inf=medio+1
         ALTRIMENTI SE(v[medio] == k) ALLORA
            risp=medio
         ALTRIMENTI
            sup=medio-1
      FINE

   binaria=risp;
FINE


Utilizzando la tecnica di calcolo della complessità in tempo possiamo concludere che
T(x) = c1+c2x
con x il numero di volte che viene eseguito il ciclo.

I calcoli approssimati per T danno
Supponiamo pessimisticamente di dover aspettare sempre fino all'ultimo passo, allora
T(n)=c1+c2*m.

Caso pessimo
Quanto vale m? La dimensione del vettore sul quale si effettua la ricerca passo-passo è
Quando il valore della potenza di 2 a denominatore raggiunge n il ciclo termina sicuramente, cioè per
2m=n
quindi, nel caso pessimo
T(n) = c1+c2m = c1+c2log2n

Esempi numerici
n m
24 = 16 4
28 = 256 8
210 = 1.024 10
216 = 65.536 16
220 = 1.048.576 20
230 = 1.073.741.824 30

There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki