Lineaire en binaire zoekalgoritmen uitgelegd

Lineaire en binaire zoekalgoritmen uitgelegd

De mogelijkheid om naar bepaalde gegevens te zoeken is een belangrijk aspect van de informatica. Zoekalgoritmen worden gebruikt om naar een bepaald item in een dataset te zoeken.





Algoritmen retourneren een booleaans resultaat (waar of onwaar) naar een zoekopdracht. Ze kunnen ook worden gewijzigd om de relatieve positie van de gevonden waarde te geven.





Voor dit artikel zullen de algoritmen zich concentreren op het bepalen of een waarde bestaat.





Lineaire zoekalgoritmen

Lineair zoeken wordt ook wel sequentieel zoeken genoemd. Bij dit type zoekopdracht wordt elke waarde in een lijst één voor één op een geordende manier bezocht terwijl wordt gecontroleerd of de gewenste waarde bestaat.

Het algoritme controleert waarde voor waarde totdat het de waarde vindt die u zoekt of geen waarden meer hebben om te zoeken. Als er geen waarden meer zijn om te zoeken, betekent dit dat uw zoekopdracht niet in de lijst voorkomt.



Een sequentieel zoekalgoritme neemt een lijst met waarden en het gewenste item in de lijst als parameters op. Het retourresultaat wordt geïnitialiseerd als niet waar en zal veranderen in Waar wanneer de gewenste waarde is gevonden.

Zie de Python-implementatie hieronder als voorbeeld:





def linearSearch(mylist, item):
found = False
index = 0
while index if mylist[index] == item:
found = True
else:
index = index+1
return found

Algoritme Analyse

Het beste scenario doet zich voor wanneer het gewenste item het eerste op de lijst is. Het slechtste geval doet zich voor wanneer het gewenste item het laatste op de lijst is (het n-de item). Daarom is de tijdcomplexiteit voor lineair zoeken O(n).

Het gemiddelde scenario in het bovenstaande algoritme is n/2.





Verwant: Wat is Big-O-notatie?

Het is belangrijk om te weten dat het gebruikte algoritme ervan uitgaat dat er een willekeurige lijst met items aan wordt gegeven. Dat wil zeggen dat de lijstitems in willekeurige volgorde staan.

windows kon formatteren niet voltooien

Stel dat de items in een bepaalde volgorde staan, bijvoorbeeld van klein naar groot. Het zou mogelijk zijn om enig voordeel te behalen in de berekening.

Neem een ​​voorbeeld van het zoeken naar 19 in de gegeven lijst: [2, 5, 6, 11, 15, 18, 23, 27, 34]. Na het bereiken van 23, zou het duidelijk worden dat het item waarnaar wordt gezocht niet in de lijst voorkomt. Daarom is het niet langer belangrijk om verder te zoeken in de rest van de lijstitems.

Binaire zoekalgoritmen

U hebt gezien hoe een geordende lijst de benodigde berekening kan verminderen. Binair zoekalgoritme maakt nog meer gebruik van deze efficiëntie die het hebben van een geordende lijst introduceert.

Het algoritme begint met het nemen van een middelste waarde van een geordende lijst en controleren of dit de gewenste waarde is. Als dit niet het geval is, wordt gecontroleerd of de waarde kleiner of groter is dan de gewenste waarde.

Als het minder is, hoeft u de onderste helft van de lijst niet te controleren. Anders, als het groter is, gaat het naar de bovenste helft van de lijst.

Verwant: Wat is recursie en hoe gebruik je het?

Ongeacht welke sublijst (links of rechts) wordt gekozen, de middelste waarde wordt opnieuw bepaald. De waarde wordt opnieuw gecontroleerd als dit de vereiste waarde is. Als dit niet het geval is, wordt gecontroleerd of deze kleiner of groter is dan de gevraagde waarde.

website die je naar willekeurige websites brengt

Dit proces wordt herhaald totdat een waarde wordt gevonden als deze er is.

De onderstaande Python-implementatie is voor het binaire zoekalgoritme.

def binarySearch(mijnlijst, item):

low = 0
high = len(mylist) - 1
found = False
while low <= high and not found: mid = (low + high) // 2
if mylist[mid] == item:found = True
elif item else:low = mid + 1
return found

Algoritme Analyse

Het beste scenario doet zich voor wanneer het gewenste item het middelste item blijkt te zijn. Het worstcasescenario is echter niet zo eenvoudig. Volg de onderstaande analyse:

Na de eerste vergelijking blijven er n/2 items over. Na de tweede blijven er n/4 items over. Na de derde, n/8.

Merk op dat het aantal items blijft halveren totdat ze n/2i bereiken, waarbij i het aantal vergelijkingen is. Na al het opsplitsen hebben we maar 1 item.

Dit houdt in:

n/2i=1 Daarom is binair zoeken O(log n).

Doorgaan met sorteren

Bij binair zoeken hebben we een geval overwogen waarin de gegeven array al was besteld. Maar stel dat je een ongeordende dataset had en je wilde er binair op zoeken. Wat zou jij doen?

Het antwoord is simpel: sorteer het. Er zijn een aantal sorteertechnieken in de informatica die goed zijn onderzocht. Een van deze technieken die u kunt gaan bestuderen, is het selectiesorteeralgoritme, terwijl we ook tal van handleidingen hebben die betrekking hebben op andere gebieden.

Deel Deel Tweeten E-mail Selectie sorteren gebruiken

Selectie sorteren is een beetje lastig te begrijpen voor beginners, maar het is niet al te uitdagend als je eenmaal de slag te pakken hebt.

Lees volgende
Gerelateerde onderwerpen
  • Programmeren
  • Technologie uitgelegd
  • Programmeren
  • Algoritmen
  • Gegevensanalyse
Over de auteur Jerome Davidson(22 artikelen gepubliceerd)

Jerome is een stafschrijver bij MakeUseOf. Hij behandelt artikelen over programmeren en Linux. Hij is ook een crypto-enthousiasteling en houdt de crypto-industrie altijd in de gaten.

Meer van Jerome Davidson

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren