L'algoritmo di ricerca lineare è un metodo semplice utilizzato per trovare un elemento specifico in un elenco. Questo algoritmo funziona controllando in sequenza ogni elemento nell'elenco fino a quando non viene trovato l'elemento desiderato o viene attraversato l'intero elenco.
Come funziona
- Inizia dal primo elemento nell'elenco.
- Confronta l'elemento corrente con il valore di destinazione.
- Se l'elemento corrente è uguale al valore di destinazione, l'algoritmo termina e restituisce la posizione dell'elemento.
- In caso contrario, continua a scorrere gli elementi rimanenti nell'elenco.
- Se l'intero elenco viene attraversato senza trovare l'elemento di destinazione, l'algoritmo restituisce un valore che indica non trovato.
Esempio
Diciamo che abbiamo un elenco di numeri interi e vogliamo trovare il numero 34 nell'elenco.
Elenco: {12, 45, 67, 89, 34, 56, 23, 90}
- Inizia dal primo elemento: 12. Non è il numero desiderato.
- Passa all'elemento successivo: 45. Non è il numero desiderato.
- Continua con gli elementi rimanenti: 67, 89, 34. L'elemento 34 corrisponde al numero desiderato.
- L'algoritmo termina e restituisce la posizione di 34, che è 4.
Esempio di codice in C++
#include <iostream>
#include <vector>
int linearSearch(const std::vector<int>& arr, int target) {
for(int i = 0; i < arr.size(); ++i) {
if(arr[i] == target) {
return i;
}
}
return -1;
}
int main() {
std::vector<int> numbers = {12, 45, 67, 89, 34, 56, 23, 90};
int target = 34;
int result = linearSearch(numbers, target);
if(result != -1) {
std::cout << "Element " << target << " found at position " << result << std::endl;
} else {
std::cout << "Element " << target << " not found in the array" << std::endl;
}
return 0;
}
Nell'esempio dato, abbiamo utilizzato la linearSearch
funzione per trovare il numero 34 nell'elenco dei numeri interi. Il risultato sarà la posizione 34 nell'elenco(le posizioni iniziano da 0) o -1 se il numero non viene trovato.