ing.informatici a me... ricerca dicotomica ricorsiva
stavo implementando questo algoritmo, do una spulciata a wikipedia, ma secondo me c'è un errore.. riporto il codice di wikipedia
/* Funzione per Ricerca Binaria con ricorsione */
int BinSe_ri(int[] arr, int n, int start, int end)
{
if (start > end) return -1;
int middle = (start + end) / 2;
if (n <arr> arr[middle])
return BinSe_ri(arr, n, middle + 1, end);
else return middle;
}
l'errore secondo me è quello selezionato, vi spiego perchè... visto che in C se facciamo una divisione intera, viene presa appunto solo la parte intera del numero (es. 9:2=4,5 quindi 4) non capisco perchè li fa +1..
in un array l'indice parte da 0, non da 1... quindi il numero medio dovrebbe essere appunto il numero della variabile middle..
quando nel sottoprogramma c'è -1 sono d'accordo, ma non mi trovo con quel +1.. io avrei lasciato solo middle..
sbalgio?
se non sbaglio vado a correggere wikipedia
/* Funzione per Ricerca Binaria con ricorsione */
int BinSe_ri(int[] arr, int n, int start, int end)
{
if (start > end) return -1;
int middle = (start + end) / 2;
if (n <arr> arr[middle])
return BinSe_ri(arr, n, middle + 1, end);
else return middle;
}
l'errore secondo me è quello selezionato, vi spiego perchè... visto che in C se facciamo una divisione intera, viene presa appunto solo la parte intera del numero (es. 9:2=4,5 quindi 4) non capisco perchè li fa +1..
in un array l'indice parte da 0, non da 1... quindi il numero medio dovrebbe essere appunto il numero della variabile middle..
quando nel sottoprogramma c'è -1 sono d'accordo, ma non mi trovo con quel +1.. io avrei lasciato solo middle..
sbalgio?
se non sbaglio vado a correggere wikipedia
