cdere
10-02-2010, 20:10
Salve a tutti,
tramite quest'algoritmo eseguo la ricerca binaria nel mio vettore:
int Dizionario::ricercaBinaria(chiave k)
{
int p,u,m;
p = 0;
u = nPagine-1;
while(p<=u)
{
m = (p+u)/2;
if( dizionario[m].key == k )
return m; // valore k trovato alla posizione m
if( dizionario[m].key < k ) // dizionario[m].key < k
p = m+1;
else
u = m-1;
}
// se il programma arriva a questo punto vuol dire che
// il valore x non è presente nel dizionario, ma se ci fosse
// dovrebbe trovarsi alla posizione u (nota che qui p==u)
return -1; // == false
}
ma adesso, per l'inserimento di un elemento chiave in maniera ordinata, devo implementare un "inserimentoBinario" oppure basta una scansione lineare e da li a spostare tutti gli elementi ?
tramite quest'algoritmo eseguo la ricerca binaria nel mio vettore:
int Dizionario::ricercaBinaria(chiave k)
{
int p,u,m;
p = 0;
u = nPagine-1;
while(p<=u)
{
m = (p+u)/2;
if( dizionario[m].key == k )
return m; // valore k trovato alla posizione m
if( dizionario[m].key < k ) // dizionario[m].key < k
p = m+1;
else
u = m-1;
}
// se il programma arriva a questo punto vuol dire che
// il valore x non è presente nel dizionario, ma se ci fosse
// dovrebbe trovarsi alla posizione u (nota che qui p==u)
return -1; // == false
}
ma adesso, per l'inserimento di un elemento chiave in maniera ordinata, devo implementare un "inserimentoBinario" oppure basta una scansione lineare e da li a spostare tutti gli elementi ?