


Studia grazie alle numerose risorse presenti su Docsity
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Prepara i tuoi esami
Studia grazie alle numerose risorse presenti su Docsity
Prepara i tuoi esami con i documenti condivisi da studenti come te su Docsity
Trova i documenti specifici per gli esami della tua università
Preparati con lezioni e prove svolte basate sui programmi universitari!
Rispondi a reali domande d’esame e scopri la tua preparazione
Riassumi i tuoi documenti, fagli domande, convertili in quiz e mappe concettuali
Studia con prove svolte, tesine e consigli utili
Togliti ogni dubbio leggendo le risposte alle domande fatte da altri studenti come te
Esplora i documenti più scaricati per gli argomenti di studio più popolari
Ottieni i punti per scaricare
Guadagna punti aiutando altri studenti oppure acquistali con un piano Premium
Argomenti trattati • Ricercare un valore in un Vettore • Ricerca Lineare (o Sequenziale) • Ricerca Binaria • Confronto tra i due algoritmi
Tipologia: Schemi e mappe concettuali
1 / 4
Questa pagina non è visibile nell’anteprima
Non perderti parti importanti!



Il problema della ricerca di un elemento in un vettore è molto diffuso in informatica. Data una sequenza di elementi sotto forma di vettore, si vuole determinare se uno specifico elemento è presente o meno all'interno della sequenza.
In questo modulo faremo riferimento a vettori di tipo numerico (in particolare di tipo intero), ma lo stesso concetto si può applicare a qualsiasi altro tipo di dato.
Esistono due casi distinti quando occorre cercare un valore all'interno di un vettore:
La scelta dell'algoritmo dipende fondamentalmente da quale dei due casi ci troviamo.
La Ricerca Lineare (detta anche Ricerca Sequenziale) si utilizza quando la sequenza di elementi del vettore non è ordinata. Poiché non è possibile stabilire a priori in quale parte del vettore potrebbe trovarsi l'elemento cercato, è necessario analizzare tutti gli elementi in sequenza e confrontarli uno ad uno con il valore da ricercare.
Se si vuole trovare solo la prima occorrenza del valore, è possibile terminare la ricerca non appena il valore viene trovato, senza scorrere l'intera sequenza.
La logica è molto semplice: si analizzano tutti gli elementi del vettore a partire dal primo, e ogni elemento viene confrontato con il valore cercato. Se il confronto dà esito positivo (i due elementi sono uguali), l'algoritmo termina restituendo che il valore è stato trovato.
L'algoritmo parte dall'indice 0 e confronta ogni elemento con 55. Quando arriva alla posizione 5 (valore 55 = valore cercato), la ricerca si interrompe con esito positivo.
La funzione ricercaLineare(array[], valore) funziona come segue:
1. Inizializza trovato = false e l'indice i = 0 2. Finché i < array.length E trovato == false : 3. Se array[i] == valore → imposta trovato = true 4. Altrimenti incrementa i++ 5. Restituisce trovato
public static boolean ricercaLineare(int[] array, int valore) { boolean trovato = false; for (int i = 0; i < array.length && !trovato; i++) { if (array[i] == valore) { trovato = true; } } return trovato; }
n Nota sulla complessità: nel caso peggiore la Ricerca Lineare esamina tutti gli n elementi del vettore. La sua complessità è O(n) : al crescere della dimensione del vettore, il tempo di ricerca cresce proporzionalmente.
3. Ricerca Binaria
La Ricerca Binaria si utilizza quando la sequenza di elementi è ordinata. È molto più efficiente della Ricerca Lineare perché, anziché scorrere tutti gli elementi uno ad uno, ad ogni passo dimezza il numero di elementi ancora da esaminare.
else sup = med - 1; } } return trovato; }
4 Nota sulla complessità: la Ricerca Binaria ha complessità O(log n). Su un vettore di 1.000.000 elementi ordinati, bastano al massimo circa 20 confronti per trovare qualsiasi valore (o stabilirne l'assenza). Requisito indispensabile: il vettore deve essere ordinato.
4. Confronto tra i due algoritmi
Caratteristica Ricerca Lineare Ricerca Binaria
Vettore richiesto Non ordinato Ordinato
Strategia Scansione sequenziale Dimezzamento dell'intervallo
Complessità (caso peggiore) O(n) – esamina tutti gli elementi^ O(log n) – molto più rapida
Variabili chiave i (indice corrente) inf, med, sup
Condizione di uscita Elemento trovato o fine vettore Trovato o inf > sup
Struttura Java Ciclo for Ciclo while
Regola pratica: se il vettore è ordinato, usa sempre la Ricerca Binaria. La sua efficienza O(log n) la rende enormemente più veloce della Ricerca Lineare O(n) su vettori di grandi dimensioni.