Binair zoeken Javascript

| | | | | | |

Hoe een binaire zoekopdracht in JavaScript te coderen

Zoekalgoritmen vergemakkelijken het leven van een programmeur enorm. Dit maakt het gemakkelijker om een bepaald item te vinden in een dataset van tientallen, honderden of duizenden items.

Een van de meest populaire vormen van zoeken is binair zoeken. Deze zoekopdracht vindt snel een element in een array. Elke keer dat een zoekopdracht een item onderzoekt, halveert het het aantal items dat moet worden gevonden.

In deze handleiding bespreken we wat binaire zoekopdrachten zijn en hoe ze werken. Vervolgens gaan we verder met het implementeren van een binaire zoekopdracht met twee verschillende benaderingen: iteratief en recursief.

Laten we een binair zoekalgoritme bouwen in !

Wat is een binaire zoekopdracht?

Een binaire zoekopdracht is een computeralgoritme dat zoekt naar een element in een geordende array.


p>

Begin in het midden van een array en controleer of het middelste element kleiner, gelijk of groter is dan het getal dat je zoekt.

Als het getal kleiner is, wordt het algoritme weet hoe hij moet blijven zoeken in de linkerhelft van de array, waar de kleinere getallen staan; als het aantal groter is, zal het algoritme zich concentreren op de rechterhelft van de array. Binaire zoekopdrachten werken alleen op geordende lijsten.

Binaire zoekopdrachten zijn efficiënter dan lineaire zoekopdrachten. Elke keer dat er wordt gezocht, wordt het aantal items dat nog in de lijst moet worden gevonden, gehalveerd.

Hoe gebruik je een binaire zoekopdracht

Een binaire zoekactie is gemakkelijk te begrijpen als u deze eenmaal heeft geleerd.

Laten we eerst eens kijken voordat u een binair zoekalgoritme implementeert. We zullen het nummer " 9 " vinden in een lijst. Laten we beginnen met een geordende lijst:

2 6 < / td> 8 9 10

Eerst wat , we moeten het middelste getal vinden en aan een variabele toewijzen. Dit wordt gevonden door de som van het eerste en het laatste getal te berekenen en te delen door twee. We noemen deze "centrale" variabele:

Start < br> Gemiddeld
Einde
2 6 8 9 10

8 is ons gemiddelde aantal. Zo kunnen we het centrale nummer vergelijken met het nummer dat we zoeken. Als het centrale nummer hetzelfde is als het nummer waarnaar we op zoek zijn, kan onze zoektocht stoppen.

In dit voorbeeld is 8 niet gelijk aan 9. We gaan verder met zoeken.

We moeten dus vergelijken of het getal in het midden groter is dan 9. Dat is niet het geval.

Dit vertelt ons dat het getal dat we zoeken achter de centrale moet staan. getal. 9 is groter dan 8. in een geordende lijst. stel ons startnummer gelijk aan het centrale getal. Dit komt omdat we weten dat het getal dat we zoeken niet voor het centrale getal komt.

Als het getal dat we zoeken meer baby is, stellen we het uiteindelijke getal in op het middelste getal. Aangezien het getal kleiner is dan het middelste getal, kunnen we onze zoekopdracht richten op de onderste helft van de lijst.

De binaire zoekopdracht wordt opnieuw herhaald in de bovenste helft van de lijst omdat 9 groter is dan 8:

< td> Medium


Start Einde
2 6 8 < /td> 9 10

Laten we het centrale nummer zoeken. Dat is 9. We kunnen 9 vergelijken met het getal dat we zoeken. 9 is gelijk aan het aantal dat we zoeken.

Dit betekent dat ons onderzoek kan stoppen. We zijn erin geslaagd om nummer 9 op onze lijst te vinden!

Hoe een binaire zoekopdracht in JavaScript te implementeren

Binaire zoekopdrachten kunnen worden geïmplementeerd met behulp van een iteratieve of recursieve benadering.

Iteratief binair zoeken

Een iteratief binair zoeken gebruikt een while-lus om een item in een lijst te vinden. Deze lus wordt uitgevoerd totdat het item in de lijst is gevonden of totdat de lijst is doorzocht.

Laten we beginnen met het schrijven van een functie die onze binaire zoekopdracht uitvoert:

Laten we beginnen met het definiëren van twee variabelen: begin en einde. Deze houden de hoogste en laagste waarden bij waarmee ons onderzoek werkt. We gebruiken een while-lus die loopt totdat het startnummer groter is dan het eindnummer. Deze lus berekent het tussenliggende getal tussen het begin en het einde van de lijst.

Als het nummer dat we zoeken gelijk is aan het nummer in het midden, wordt het nummer in het midden teruggestuurd naar ons hoofdprogramma. het getal is kleiner, de seed-waarde is gelijk aan het middelste getal plus 1. Deze vergelijkingen worden gemaakt met behulp van een if-statement .

Anders wordt het laatste getal ingesteld op het middelste getal min 1. Als ons getal niet wordt gevonden na het uitvoeren van de while-lus, retourneert het -1. We noemen dit de basisvoorwaarde. In ons hoofdprogramma gebruiken we zal controleren of het geretourneerde getal gelijk is aan -1. is, betekent dit dat ons nummer niet is gevonden.

Onze functie werkt nog niet. We moeten een hoofdprogramma schrijven om het een naam te geven:

We hebben een lijst opgesteld met nummers waarnaar we moeten zoeken en het nummer dat we in onze lijst willen vinden. Vervolgens hebben we de binarySearch-functie aangeroepen. Dit zal ons onderzoek doen. De zoekopdracht geeft als resultaat -1 of de positie van het element dat we zoeken.

-1 geeft aan dat een item niet kon worden gevonden. Als een element niet wordt gevonden, wordt de inhoud van ons else -statement uitgevoerd. Anders wordt de inhoud van de instructie if uitgevoerd.

Laten we onze code uitvoeren:

Dit vertelt ons dat onze zoekopdracht succesvol was !

Recursieve binaire zoekopdracht

Een recursieve binaire zoekopdracht wordt als eleganter beschouwd dan een iteratieve zoekopdracht. Dit komt omdat binaire zoekopdrachten steeds dezelfde bewerking op een lijst uitvoeren. Dit gedrag kan worden geïmplementeerd met behulp van een recursie-algoritme.

Open een nieuw JavaScript-bestand en plak deze code:

Deze code doet dezelfde vergelijkingen als onze eerste zoekopdracht. Controleer of het middelste getal gelijk, groter of kleiner is dan het getal dat we zoeken.

Aan het begin van onze function , we hebben een if-statement gebruikt om te controleren of het begingetal groter is dan het eindgetal. Als dit het geval is, betekent dit dat ons item niet is gevonden in de lijst die we hebben opgegeven. In dit geval keren we -1 terug naar het hoofdprogramma.

Als het nummer dat we zoeken hetzelfde is als het centrale nummer, wordt het centrale nummer teruggestuurd naar het hoofdprogramma. het getal dat we zoeken is groter of kleiner dan het centrale getal, onze binaire zoekfunctie wordt opnieuw uitgevoerd. Dit gaat door totdat ons element is gevonden.

Om deze functie uit te voeren, moeten we breng een wijziging aan in ons hoofdprogramma:

We moeten nog twee parameters doorgeven: de waarden ‚Äã‚Äãvan "start" en "end". De waarde van "start" is gelijk aan 0. De waarde van "end" is gelijk aan de lengte van de lijst min één.

Laten we onze code uitvoeren en kijken wat er gebeurt:

Onze binaire zoekopdracht was succesvol! Het gebruikt hetzelfde onderliggende algoritme als de iteratieve benadering. Het verschil is dat de binaire zoekopdracht wordt uitgevoerd met behulp van een functie die wordt aangeroepen totdat het item is gevonden of totdat de zoekopdracht in de lijst is voltooid, afhankelijk van wat zich het eerst voordoet.

Conclusie

Binaire zoekopdrachten maken het gemakkelijker om een item in een lijst te vinden. Elke keer dat een zoekopdracht wordt uitgevoerd, wordt het aantal items dat nog in een lijst moet worden gevonden, gehalveerd. Dit maakt een binaire zoekopdracht efficiënter dan een lineaire zoekopdracht.

U bent nu klaar om implementeer binair zoeken in JavaScript als een expert!

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


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