Ricerca Binaria Javascript

| | | | | | |

Come codificare una ricerca binaria in JavaScript

Gli algoritmi di ricerca semplificano notevolmente la vita di un programmatore. In questo modo è facile trovare un particolare elemento all’interno di un set di dati di decine, centinaia o migliaia di elementi.

Una delle forme di ricerca più popolari è la ricerca binaria. Questa ricerca trova rapidamente un elemento in un array. Ogni volta che la ricerca esamina un elemento, riduce della metà il numero di elementi da cercare.

In questa guida, parleremo di cosa sono le ricerche binarie e come funzionano. Passeremo quindi a implementare una ricerca binaria utilizzando due diversi approcci: iterativo e ricorsivo.

Costruiamo un algoritmo di ricerca binaria in JavaScript!

Cos’è una ricerca binaria?

Una ricerca binaria è un algoritmo informatico che cerca un elemento in un array ordinato.

Inizia nel mezzo di un array e controlla se l’elemento centrale è minore, uguale o maggiore del numero che stai cercando.

Se il numero è più piccolo, l’algoritmo sa di continuare a cercare nella metà sinistra dell’array, dove si trovano i numeri più piccoli; se il numero è maggiore, l’algoritmo si concentrerà sulla metà destra dell’array. Le ricerche binarie funzionano solo su elenchi ordinati.

Le ricerche binarie sono più efficienti delle ricerche lineari. Questo perché ogni volta che viene effettuata una ricerca il numero di elementi rimasti da cercare nell’elenco viene ridotto della metà.

Come utilizzare un binario Ricerca

Una ricerca binaria è facile da capire una volta che ci si impara.

Prima di implementare un algoritmo di ricerca binaria, esaminiamo una procedura dettagliata -fare un passo. Troveremo il numero "9" in un elenco. Iniziamo con un elenco ordinato:

2 68910

Per prima cosa, dobbiamo trovare il numero centrale e assegnarlo a una variabile. Questo si trova calcolando la somma del primo e dell’ultimo numero e dividendo per due. Chiameremo questa variabile "centrale":

Inizio
Medio
Fine
268910

8 è il nostro numero medio. Quindi, possiamo confrontare il numero centrale con quello che stiamo cercando. Se il numero centrale è uguale a quello che stiamo cercando, la nostra ricerca può interrompersi.

In questo esempio, 8 non è uguale a 9. La nostra ricerca continua.

Quindi, dobbiamo confrontare se il numero centrale è maggiore di 9. Non lo è.

Questo ci dice che il numero che stiamo cercando deve essere dopo il numero centrale. 9 è maggiore di 8 in un elenco ordinato. imposta il nostro numero iniziale in modo che sia uguale al numero centrale.Questo perché sappiamo che il numero che stiamo cercando non viene prima del numero centrale.

Se il numero che stiamo cercando la ricerca è più piccola, imposteremo il numero finale in modo che sia uguale al numero centrale. Poiché il numero è più piccolo del numero centrale, potremmo concentrare la nostra ricerca sulla metà inferiore dell’elenco.

La ricerca binaria si ripete di nuovo nella metà superiore dell’elenco perché 9 è maggiore di 8:



InizioMedioFine
268910

Troviamo di nuovo il numero centrale. Questo è 9. Possiamo confrontare 9 con il numero che stiamo cercando. 9 è uguale al numero che stiamo cercando.

Ciò significa che la nostra ricerca può interrompersi. Abbiamo trovato con successo il numero 9 nella nostra lista!

Come implementare una ricerca binaria in JavaScript

Le ricerche binarie possono essere implementate utilizzando un approccio iterativo o ricorsivo.

Ricerca binaria iterativa

Una ricerca binaria iterativa utilizza un ciclo while per trovare un elemento in un elenco. Questo ciclo verrà eseguito fino a quando l’elemento non viene trovato nell’elenco o fino a quando l’elenco non è stato cercato.

Cominciamo scrivendo un funzione che esegue la nostra ricerca binaria:

Iniziamo definendo due variabili: inizio e fine. Questi tengono traccia dei valori più alti e più bassi con cui sta lavorando la nostra ricerca. Usiamo un ciclo while che viene eseguito finché il numero iniziale non è maggiore del numero finale. Questo ciclo calcola il numero intermedio tra l’inizio e la fine nell’elenco.

Se il numero che stiamo cercando è uguale al numero centrale, il numero centrale viene restituito al nostro programma principale.Se il numero è più piccolo, il valore iniziale è impostato per essere uguale al numero centrale più uno. Questi confronti vengono eseguiti utilizzando un’istruzione if.

In caso contrario, il numero finale è impostato su essere uguale al numero centrale meno uno. Se il nostro numero non viene trovato dopo l’esecuzione del ciclo while, viene restituito -1. La chiamiamo condizione di base. Nel nostro programma principale, controlleremo se il numero restituito è uguale a -1. Se lo è, significa che il nostro numero non è stato trovato.

La nostra funzione non funziona ancora. Dobbiamo scrivere un programma principale che lo chiami:

Abbiamo definito un elenco di numeri attraverso i quali cercare e il numero che vogliamo trovare nel nostro elenco. Successivamente, abbiamo chiamato la funzione binarySearch. Questo eseguirà la nostra ricerca. La ricerca restituirà -1 o la posizione dell’elemento che stiamo cercando.

-1 indica che non è stato possibile trovare un elemento. Se un elemento non viene trovato, viene eseguito il contenuto della nostra istruzione else. Altrimenti, viene eseguito il contenuto dell’istruzione if.

Eseguiamo il nostro codice:

Questo ci dice che la nostra ricerca ha avuto successo!

Ricorrente Ricerca binaria

Una ricerca binaria ricorsiva è considerata più elegante di una iterativa. Questo perché le ricerche binarie eseguono più e più volte la stessa operazione su un elenco. Questo comportamento può essere implementato utilizzando un algoritmo di ricorsione.

Apri un nuovo file JavaScript e incolla questo codice:

Questo codice effettua gli stessi confronti della nostra prima ricerca. Controlla se il numero centrale è uguale, maggiore o minore del numero che stiamo cercando.

All’inizio della nostra funzione, abbiamo utilizzato un’istruzione if per verificare se il numero iniziale è maggiore del numero finale. Se lo è, significa che il nostro articolo non è stato trovato nell’elenco che abbiamo specificato. In tal caso, restituiamo -1 al programma principale.

Se il numero che stiamo cercando è lo stesso del numero centrale, il numero centrale viene restituito al programma principale. Se il numero che stiamo cercando è maggiore o minore del numero centrale, la nostra funzione di ricerca binaria è esegui di nuovo. Questo continua finché non viene trovato il nostro elemento.

Per eseguire questa funzione, dovremo apportare una modifica al nostro programma principale:

Dobbiamo passare due parametri aggiuntivi: i valori di "start" e "fine". Il valore di "start" è uguale a 0. Il valore di "end" è uguale alla lunghezza della lista meno uno.

Eseguiamo il nostro codice e vediamo cosa succede:

La nostra ricerca binaria ha avuto successo! Utilizza lo stesso algoritmo sottostante dell’approccio iterativo. La differenza è che la ricerca binaria viene eseguita utilizzando una funzione che si richiama fino a quando non viene trovato l’elemento o fino a quando la ricerca nell’elenco non viene completata, a seconda di quale evento si verifica per primo.

Conclusione

Ricerche binarie semplificare la ricerca di un elemento in un elenco. Ogni volta che viene eseguita una ricerca, il numero di elementi rimasti da cercare in un elenco viene ridotto della metà. Ciò rende una ricerca binaria più efficiente di una ricerca lineare.

Ora sei pronto per implementare una ricerca binaria in JavaScript come un esperto!

Shop

Learn programming in R: courses

$

Best Python online courses for 2022

$

Best laptop for Fortnite

$

Best laptop for Excel

$

Best laptop for Solidworks

$

Best laptop for Roblox

$

Best computer for crypto mining

$

Best laptop for Sims 4

$

Latest questions

NUMPYNUMPY

psycopg2: insert multiple rows with one query

12 answers

NUMPYNUMPY

How to convert Nonetype to int or string?

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Javascript Error: IPython is not defined in JupyterLab

12 answers

News


Wiki

Python OpenCV | cv2.putText () method

numpy.arctan2 () in Python

Python | os.path.realpath () method

Python OpenCV | cv2.circle () method

Python OpenCV cv2.cvtColor () method

Python - Move item to the end of the list

time.perf_counter () function in Python

Check if one list is a subset of another in Python

Python os.path.join () method