binary search algorithm java implementation examples
In deze zelfstudie worden binair zoeken en recursief binair zoeken in Java uitgelegd, samen met de voorbeelden van algoritme, implementatie en Java binaire zoekcode:
Een binaire zoekopdracht in Java is een techniek die wordt gebruikt om te zoeken naar een gerichte waarde of sleutel in een verzameling. Het is een techniek die de 'verdeel en heers' -techniek gebruikt om naar een sleutel te zoeken.
De verzameling waarop binair zoeken moet worden toegepast om naar een sleutel te zoeken, moet in oplopende volgorde worden gesorteerd.
Gewoonlijk ondersteunen de meeste programmeertalen Lineair zoeken, Binair zoeken en Hashing-technieken die worden gebruikt om naar gegevens in de verzameling te zoeken. We zullen hashing leren in onze volgende tutorials.
Bezoek hier om Java vanaf het begin te leren.
Wat je leert:
Binair zoeken in Java
Lineair zoeken is een basistechniek. Bij deze techniek wordt de reeks opeenvolgend doorlopen en wordt elk element vergeleken met de sleutel totdat de sleutel is gevonden of het einde van de reeks is bereikt.
Lineair zoeken wordt zelden gebruikt in praktische toepassingen. Binair zoeken is de meest gebruikte techniek omdat het veel sneller is dan lineair zoeken.
Java biedt drie manieren om een binaire zoekopdracht uit te voeren:
agile scrum methodologie interviewvragen antwoorden
- Met behulp van de iteratieve benadering
- Gebruik een recursieve benadering
- Met behulp van de methode Arrays.binarySearch ().
In deze tutorial zullen we al deze 3 methoden implementeren en bespreken.
Algoritme voor binair zoeken in Java
Bij de binaire zoekmethode wordt de verzameling herhaaldelijk in tweeën gedeeld en wordt het sleutelelement doorzocht in de linker- of rechterhelft van de verzameling, afhankelijk van of de sleutel kleiner of groter is dan het middenelement van de verzameling.
Een eenvoudig binair zoekalgoritme is als volgt:
- Bereken het middenelement van de verzameling.
- Vergelijk de belangrijkste items met het middenelement.
- Als key = middle element, dan retourneren we de middelste indexpositie voor de gevonden sleutel.
- Else If key> mid element, dan ligt de sleutel in de rechterhelft van de collectie. Herhaal daarom stap 1 tot en met 3 in de onderste (rechter) helft van de verzameling.
- Anders sleutel
Zoals je kunt zien in de bovenstaande stappen, wordt bij binair zoeken de helft van de elementen in de verzameling genegeerd net na de eerste vergelijking.
Merk op dat dezelfde reeks stappen geldt voor zowel iteratief als recursief binair zoeken.
Laten we het binaire zoekalgoritme aan de hand van een voorbeeld illustreren.
Bijvoorbeeld, neem de volgende gesorteerde reeks van 10 elementen.
Laten we de middelste locatie van de array berekenen.
Midden = 0 + 9/2 = 4
# 1) Sleutel = 21
Eerst zullen we de sleutelwaarde vergelijken met het (mid) -element en we vinden dat de elementwaarde mid = 21.
We vinden dus dat key = (mid). Daarom bevindt de sleutel zich op positie 4 in de array.
# 2) Sleutel = 25
We vergelijken eerst de sleutelwaarde met midden. Zoals (21<25), we will directly search for the key in the upper half of the array.
Nu vinden we weer het midden van de bovenste helft van de array.
Midden = 4 + 9/2 = 6
De waarde op locatie (mid) = 25
Nu vergelijken we het sleutelelement met het middenelement. Dus (25 == 25), dus we hebben de sleutel gevonden op locatie (mid) = 6.
We verdelen dus herhaaldelijk de array en door het sleutelelement met het midden te vergelijken, beslissen we in welke helft we naar de sleutel zoeken. Binair zoeken is efficiënter in termen van tijd en correctheid en is ook veel sneller.
Binaire zoekimplementatie Java
Laten we met behulp van het bovenstaande algoritme een binair zoekprogramma in Java implementeren met behulp van de iteratieve benadering. In dit programma nemen we een voorbeeldarray en voeren we een binaire zoekopdracht uit op deze array.
Uitgang:
De invoerarray: (5, 10, 15, 20, 25, 30, 35)
Sleutel om te zoeken = 20
Element is te vinden bij index: 3
Het bovenstaande programma toont een iteratieve benadering van binair zoeken. Aanvankelijk wordt een array gedeclareerd en vervolgens wordt een te doorzoeken sleutel gedefinieerd.
Nadat het midden van de array is berekend, wordt de sleutel vergeleken met het middenelement. Afhankelijk van of de sleutel kleiner of groter is dan de sleutel, wordt de sleutel respectievelijk in de onderste of bovenste helft van de array doorzocht.
Recursief binair zoeken in Java
U kunt ook een binaire zoekopdracht uitvoeren met behulp van de recursietechniek. Hier wordt de binaire zoekmethode recursief aangeroepen totdat de sleutel is gevonden of de hele lijst is uitgeput.
hoe jnlp-bestand te openen in Windows 10
Het programma dat een recursieve binaire zoekopdracht implementeert, wordt hieronder gegeven:
Uitgang:
Invoerlijst: (1, 11, 21, 31, 41, 51, 61, 71, 81, 91
De sleutel die moet worden doorzocht:
Sleutel is gevonden op locatie: 3 in de lijst
Met behulp van de methode Arrays.binarySearch ().
De klasse Arrays in Java biedt een ‘binarySearch ()’ - methode die de binaire zoekactie uitvoert op de opgegeven array. Deze methode gebruikt de array en de sleutel die moeten worden doorzocht als argumenten en retourneert de positie van de sleutel in de array. Als de sleutel niet wordt gevonden, retourneert de methode -1.
Het onderstaande voorbeeld implementeert de methode Arrays.binarySearch ().
Uitgang:
De invoerreeks: (10, 20, 30, 40, 50, 60, 70, 80, 90)
De sleutel die moet worden doorzocht: 50
Sleutel is te vinden op index: 4 in de array.
Veel Gestelde Vragen
V # 1) Hoe schrijf je een binaire zoekopdracht?
Antwoord: Binair zoeken wordt meestal uitgevoerd door de array in twee helften te verdelen. Als de te doorzoeken sleutel groter is dan het middenelement, dan wordt de bovenste helft van de array doorzocht door de sub-array verder te verdelen en te doorzoeken totdat de sleutel is gevonden.
hoe maak je een lijst in java
Evenzo, als de sleutel kleiner is dan het middenelement, wordt de sleutel doorzocht in de onderste helft van de array.
Vraag 2) Waar wordt de binaire zoekopdracht gebruikt?
Antwoord: Binair zoeken wordt voornamelijk gebruikt om gesorteerde gegevens in softwaretoepassingen te doorzoeken, vooral wanneer de geheugenruimte compact en beperkt is.
Q # 3) Wat is de grote O van binair zoeken?
Antwoord: De tijdcomplexiteit van de binaire zoekopdracht is O (logn), waarbij n het aantal elementen in de array is. De ruimtecomplexiteit van de binaire zoekactie is O (1).
V # 4) Is binair zoeken recursief?
Antwoord: Ja. Omdat binair zoeken een voorbeeld is van een verdeel-en-heersstrategie en het kan worden geïmplementeerd met behulp van recursie. We kunnen de array in twee helften verdelen en dezelfde methode aanroepen om de binaire zoekactie keer op keer uit te voeren.
V # 5) Waarom wordt het een binaire zoekopdracht genoemd?
Antwoord: Het binaire zoekalgoritme gebruikt een verdeel-en-heersstrategie die de array herhaaldelijk in tweeën deelt. Daarom wordt het binair zoeken genoemd.
Gevolgtrekking
Binair zoeken is de veelgebruikte zoektechniek in Java. De vereiste om een binaire zoekopdracht uit te voeren, is dat de gegevens in oplopende volgorde moeten worden gesorteerd.
Een binaire zoekopdracht kan worden geïmplementeerd met een iteratieve of recursieve benadering. De klasse Arrays in Java biedt ook de ‘binarySearch’ -methode die een binaire zoekopdracht op een array uitvoert.
In onze volgende tutorials zullen we verschillende sorteertechnieken in Java onderzoeken.
Bekijk hier de eenvoudige Java-trainingsserie.
Aanbevolen literatuur
- Selectie sorteren in Java - Selectie sorteeralgoritme en voorbeelden
- Invoegsortering in Java - Invoegsorteeralgoritme en voorbeelden
- Binaire zoekboom C ++: BST-implementatie en bewerkingen met voorbeelden
- Java-interface en abstracte les met voorbeelden
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials
- Bubbelsortering in Java - Java-sorteeralgoritmen en codevoorbeelden
- Zelfstudie over Java String | Java String-methoden met voorbeelden
- Wat is Java-vector | Java Vector Class-zelfstudie met voorbeelden