L'algoritmo di ricerca binaria è un modo più efficiente di cercare un elemento specifico in un elenco ordinato. A differenza della ricerca lineare, che controlla gli elementi in sequenza, la ricerca binaria divide l'elenco a metà e confronta l'elemento di destinazione con l'elemento centrale. Questo processo viene ripetuto finché non viene trovato l'elemento di destinazione o l'intervallo di ricerca diventa vuoto.
Come funziona
- Inizia con l'intero elenco ordinato.
- Trova l'elemento centrale dell'intervallo di ricerca corrente.
- Confronta l'elemento centrale con il valore di destinazione.
- Se l'elemento centrale è uguale al valore target, la ricerca ha esito positivo.
- Se l'elemento centrale è maggiore dell'obiettivo, cerca nella metà sinistra dell'intervallo.
- Se l'elemento centrale è più piccolo del bersaglio, cerca nella metà destra dell'intervallo.
- Ripetere i passaggi da 2 a 6 finché non viene trovato l'elemento di destinazione o l'intervallo di ricerca diventa vuoto.
Esempio
Consideriamo un elenco ordinato di numeri interi e desideriamo trovare il numero 34 utilizzando la ricerca binaria.
Elenco ordinato: {12, 23, 34, 45, 56, 67, 89, 90}
- Inizia con l'intero elenco.
- Elemento centrale: 56(posizione 4). Confronta con 34.
- 56 è maggiore di 34. Cerca nella metà sinistra.
- Nuovo elemento centrale: 23(posizione 1). Confronta con 34.
- 23 è minore di 34. Cerca nella metà destra.
- Nuovo elemento centrale: 45(posizione 3). Confronta con 34.
- 45 è maggiore di 34. Cerca nella metà sinistra.
- Nuovo elemento centrale: 34(posizione 2). Obiettivo trovato.
Esempio di codice in C++
Nell'esempio fornito, la binarySearch
funzione viene utilizzata per trovare il numero 34 in un elenco ordinato di numeri interi. Il risultato sarà la posizione 34 nell'elenco(le posizioni iniziano da 0) o -1 se il numero non viene trovato.