Binär sökalgoritm med EXEMPEL
⚡ Smart sammanfattning
Binär sökalgoritm hittar ett objekt i en sorterad lista genom att upprepade gånger halvera sökområdet och jämföra målet med mittelementet. Även kallad halvintervallsökning eller logaritmisk sökning, är den mycket snabbare än att skanna varje element.
Innan vi lär oss binär sökning, låt oss lära oss vad sökning är.
Vad är Sök?
Sök är ett verktyg som gör att användaren kan hitta dokument, filer, media eller någon annan typ av data som finns i en databas. Sök fungerar på den enkla principen att matcha kriterierna med posterna och visa dem för användaren. På så sätt fungerar den mest grundläggande sökfunktionen.
Vad är binär sökning?
En binär sökning är en avancerad typ av sökalgoritm som hittar och hämtar data från en sorterad lista med objekt. Dess grundläggande arbetsprincip innebär att dela upp informationen i listan i två halvor tills det önskade värdet hittas och visas för användaren i sökresultatet. Binär sökning är allmänt känd som en halvintervallssökning eller ett logaritmisk sökning.
Hur fungerar binär sökning?
Den binära sökningen fungerar på följande sätt:
- Sökprocessen initieras genom att hitta det mittersta elementet i den sorterade datamatrixen.
- Därefter jämförs nyckelvärdet med elementet.
- Om nyckelvärdet är mindre än det mellersta elementet analyserar sökningen de övre värdena till det mellersta elementet för jämförelse och matchning.
- Om nyckelvärdet är större än det mellersta elementet analyserar sökningen de lägre värdena till det mellersta elementet för jämförelse och matchning.
Binär sökalgoritm (pseudokod)
Den binära sökningen kan skrivas som en kort, iterativ rutin. Den behåller två pekare, låg och hög, och begränsar intervallet tills målet hittas eller intervallet blir tomt.
binarySearch(array, target)
low = 0
high = length(array) - 1
while low <= high
mid = (low + high) / 2 // floor value
if array[mid] == target
return mid
else if array[mid] < target
low = mid + 1
else
high = mid - 1
return -1 // target not found
Rutinen returnerar målets index vid framgång och -1 när värdet inte finns. Eftersom intervallet halveras vid varje pass körs loopen högst log₂(n) gånger.
Exempel på binär sökning
Låt oss titta på exemplet på en ordbok. Om du behöver hitta ett visst ord går ingen igenom varje ord på ett sekventiellt sätt utan lokaliserar slumpmässigt de närmaste orden för att söka efter det önskade ordet.
Bilden ovan illustrerar följande:
- Du har en matris med 10 siffror och elementet 59 måste hittas.
- Alla element är markerade med index från 0 till 9. Nu beräknas mitten av arrayen. För att göra det tar du indexets vänstra och högra värden och dividerar dem med 2. Resultatet är 4.5, men vi tar golvvärdet. Därför är mitten 4.
- Algoritmen tar bort alla element från mitten (4) till den lägsta gränsen, eftersom 59 är större än 24, och nu finns det bara 5 element kvar i matrisen.
- Nu är 59 större än 45 och mindre än 63. Mittvärdet är 7. Därför blir det högra indexvärdet mitten − 1, vilket är lika med 6, och det vänstra indexvärdet förblir detsamma som tidigare, vilket är 5.
- Vid det här laget vet du att 59 kommer efter 45. Därför blir det vänstra indexet, som är 5, också mitt.
- Dessa iterationer fortsätter tills arrayen reduceras till endast ett element, eller objektet som ska hittas blir mitt i arrayen.
Exempelvis 2
Låt oss titta på följande exempel för att förstå hur binärsökning fungerar.
- Du har en rad sorterade värden från 2 till 20 och måste hitta 18.
- Medelvärdet av den nedre och övre gränsen är (l + r) / 2 = 4. Värdet som söks är större än mittvärdet, vilket är 4.
- Matrisvärden som är mindre än mittvärdet tas bort från sökningen, och värden som är större än mittvärdet 4 genomsöks.
- Detta är en återkommande uppdelningsprocess tills det faktiska föremålet som ska sökas hittas.
Varför behöver vi binär sökning?
Följande skäl gör binär sökning till ett bättre val att använda som sökalgoritm:
- Binär sökning fungerar effektivt på sorterade data oavsett datamängd.
- Istället för att utföra sökningen genom att gå igenom data i en sekvens, kommer den binära algoritmen slumpmässigt åt data för att hitta det nödvändiga elementet. Detta gör sökcyklerna kortare och mer exakta.
- Binär sökning utför jämförelser av sorterad data baserat på en ordningsprincip snarare än att använda likhetsjämförelser, vilka är långsammare och mestadels felaktiga.
- Efter varje sökcykel delar algoritmen upp arrayens storlek i hälften; därför kommer den i nästa iteration bara att fungera i den återstående halvan av arrayen.
Läs vår nästa handledning om Linjär sökning: Python, C++ Exempelvis.
Binär sökning kontra linjär sökning
Binär sökning och linjär sökning är de två vanligaste sätten att hitta ett värde i en samling. Tabellen nedan visar hur de skiljer sig åt:
| Aspect | Binär sökning | Linjär sökning |
|---|---|---|
| Datakrav | Kräver sorterade data | Fungerar på sorterade eller osorterade data |
| Metod | Halverar sökområdet för varje steg | Kontrollerar varje element i sekvens |
| Tidskomplexitet | O (log n) | O (n) |
| Bäst för | Stora, sorterade datamängder | Små eller osorterade datamängder |
Kort sagt, binär sökning är mycket snabbare på stora sorterade data, medan linjär sökning är enklare och det enda alternativet när data inte är sorterade.



