/* File: ricbinit.c */ /* Time-stamp: "2001-05-25 15:06:28 calvanes" */ /* Scopo: ricerca in un vettore ordinato */ bool RicercaBinariaIterativa(TipoVettore A, TipoElemVettore elem, int n, int *posiz) /* Effettua la ricerca binaria di elem tra i primi n elementi di A, usando l'iterazione. Il valore di ritorno e` TRUE se elem e` presente in A, FALSE altrimenti. Se elem e` presente in A, posiz contiene l'indice della componente pari ad elem. */ { int inf, med, sup; bool trovato = FALSE; inf = 0; sup = n-1; while (inf <= sup && !trovato) { med = (inf + sup) / 2; if (elem == A[med]) { /* l'elemento e` stato trovato */ *posiz = med; trovato = TRUE; } else if (elem < A[med]) sup = med - 1; /* cerca nella parte inferiore */ else inf = med + 1; /* cerca nella parte superiore */ } return trovato; } /* RicercaBinariaIterativa */