Salve, questo programma che esegue una ricerca di un elemento in un array di numeri interi ordinato in modo crescente non capisco a cosa si riferisce e come mai sono stati definiti gli "Int l" e "Int r". Qualcuno può spiegarmi la prima parte di codice? Quella del "Int ricerca". Grazie. L’algoritmo di ricerca confronta, ad ogni iterazione, l’elemento da cercare con l’elemento centrale nell’array. Se il confronto fallisce si ripete la ricerca su una delle due metà dell’array.
#include <iostream>
#define N 11
using namespace std;
int ricerca(int v[], int dato, int l, int r) {
while (r >= l)
{
int centro = (l + r) / 2;
if (dato == v[centro]) return centro;
if (dato < v[centro]) r = centro - 1;
else l = centro + 1;
}
return -1;
}
int main() {
int risultato, valore, V[N], i, x;
for (i = 0; i < N; i++)
V[i] = (1 + i)*rand() % 201;
cout << "I valori del vettore sono: ";
for (i = 0; i < N; i++)
cout << V[i] << " ";
cout << endl;
do {
cout << "Inserire valore da cercare o 0 per terminare ricerca" << endl;
cin >> x;
valore = x;
risultato = ricerca(V, valore, 0, N - 1);
if (risultato >= 0)
cout << valore << " trovato" << endl;
else
cout << valore << " non trovato" << endl;
} while (valore != 0);
return 0;
}