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!

Ci auguriamo che questo articolo ti abbia aiutato a risolvere il problema. Oltre a Ricerca Binaria Javascript, controlla altri argomenti relativi a exp.

Vuoi eccellere in Python? Consulta la nostra recensione dei migliori corsi online Python 2022. Se sei interessato alla scienza dei dati, controlla anche come imparare a programmare in R.

A proposito, questo materiale è disponibile anche in altre lingue:



Manuel Schteiner

Singapore | 2022-12-01

Mi stavo preparando per il mio colloquio di codifica, grazie per aver chiarito questo punto - Ricerca Binaria Javascript in Python non è il più semplice. Non sono proprio sicuro che sia il metodo migliore

Ken Emmerson

Warsaw | 2022-12-01

repeat è tutto un po' confuso 😭 Ricerca Binaria Javascript non è l'unico problema che ho riscontrato. Lo userò nella mia tesi di laurea

Chen Galleotti

Vigrinia | 2022-12-01

Mi stavo preparando per il mio colloquio di codifica, grazie per aver chiarito questo punto - Ricerca Binaria Javascript in Python non è il più semplice. Spero solo che non emerga più

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

Common xlabel/ylabel for matplotlib subplots

12 answers

NUMPYNUMPY

How to specify multiple return types using type-hints

12 answers

NUMPYNUMPY

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

12 answers

NUMPYNUMPY

Flake8: Ignore specific warning for entire file

12 answers

NUMPYNUMPY

glob exclude pattern

12 answers

NUMPYNUMPY

How to avoid HTTP error 429 (Too Many Requests) python

12 answers

NUMPYNUMPY

Python CSV error: line contains NULL byte

12 answers

NUMPYNUMPY

csv.Error: iterator should return strings, not bytes

12 answers

News


Wiki

Python | How to copy data from one Excel sheet to another

Common xlabel/ylabel for matplotlib subplots

Check if one list is a subset of another in Python

sin

How to specify multiple return types using type-hints

exp

Printing words vertically in Python

exp

Python Extract words from a given string

Cyclic redundancy check in Python

Finding mean, median, mode in Python without libraries

cos

Python add suffix / add prefix to strings in a list

Why do I get "Pickle - EOFError: Ran out of input" reading an empty file?

Python - Move item to the end of the list

Python - Print list vertically