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:
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 →