La ricerca binaria è un modo veloce per trovare un valore in una lista ordinata. Si controlla l’elemento centrale, si esclude metà dei valori rimanenti e si ripete. Se la lista non è ordinata, questa logica non vale.
In una lista in ordine crescente, la regola è semplice: se il valore centrale è minore del valore cercato, si cerca a destra; se è maggiore, si cerca a sinistra. Poiché l’intervallo si riduce ogni volta di circa la metà, la ricerca binaria ha complessità temporale .
Come funziona la ricerca binaria su una lista ordinata
Usa questa lista ordinata:
Supponiamo che il valore cercato sia .
Si parte con l’intero intervallo. Il valore centrale è . Poiché , tutto ciò che si trova a sinistra di può essere scartato, quindi la ricerca continua in
Ora il valore centrale è . Poiché , tutto ciò che si trova a destra di può essere scartato, quindi l’intervallo diventa
Ora il valore centrale è , quindi la ricerca si ferma. L’idea utile non è solo che il valore cercato è stato trovato. In due confronti, l’intervallo dei candidati è passato da valori a .
Perché la ricerca binaria è in
Ogni confronto elimina circa metà dei candidati rimanenti. Dopo un passo, restano circa elementi. Dopo due passi, ne restano circa . Dopo passi, la dimensione rimanente è circa
La ricerca termina quando questa quantità è circa , quindi il numero di passi soddisfa
Prendendo il di entrambi i lati si ottiene
Ecco perché la ricerca binaria scala bene. Una ricerca lineare può richiedere fino a controlli, ma la ricerca binaria richiede solo abbastanza controlli da continuare a dimezzare l’intervallo.
Esempio di codice per la ricerca binaria
Ecco una versione iterativa standard in Python:
Domande frequenti
- La ricerca binaria funziona su qualsiasi lista?
- No. La ricerca binaria standard funziona solo quando i dati sono già ordinati secondo la stessa regola usata nei confronti.
- Perché la ricerca binaria è più veloce del controllo di ogni elemento?
- Ogni confronto elimina circa metà dell’intervallo rimanente, quindi il numero di controlli cresce molto più lentamente rispetto alla ricerca lineare.
Hai bisogno di aiuto con un problema?
Carica la tua domanda e ottieni una soluzione verificata, passo dopo passo, in pochi secondi.
Apri GPAI Solver →