binary search algorithm java implementation examples
In diesem Lernprogramm werden die binäre Suche und die rekursive binäre Suche in Java zusammen mit den Beispielen für Algorithmus, Implementierung und Java Binary Seach Code erläutert:
Eine binäre Suche in Java ist eine Technik, mit der nach einem Zielwert oder Schlüssel in einer Sammlung gesucht wird. Es ist eine Technik, die die 'Teilen und Erobern' -Technik verwendet, um nach einem Schlüssel zu suchen.
Die Sammlung, auf die die binäre Suche angewendet werden soll, um nach einem Schlüssel zu suchen, muss in aufsteigender Reihenfolge sortiert werden.
Normalerweise unterstützen die meisten Programmiersprachen lineare Such-, binäre Such- und Hashing-Techniken, die zum Suchen nach Daten in der Sammlung verwendet werden. Wir werden Hashing in unseren nachfolgenden Tutorials lernen.
=> Besuchen Sie hier, um Java von Grund auf neu zu lernen.
Was du lernen wirst:
Binäre Suche in Java
Die lineare Suche ist eine grundlegende Technik. Bei dieser Technik wird das Array nacheinander durchlaufen und jedes Element wird mit dem Schlüssel verglichen, bis der Schlüssel gefunden oder das Ende des Arrays erreicht ist.
Die lineare Suche wird in praktischen Anwendungen selten verwendet. Die binäre Suche ist die am häufigsten verwendete Technik, da sie viel schneller als eine lineare Suche ist.
Java bietet drei Möglichkeiten, eine binäre Suche durchzuführen:
beste E-Mail-Tracking-Software für Google Mail
- Verwendung des iterativen Ansatzes
- Verwendung eines rekursiven Ansatzes
- Verwenden der Methode Arrays.binarySearch ().
In diesem Tutorial werden wir alle diese drei Methoden implementieren und diskutieren.
Algorithmus für die binäre Suche in Java
Bei der binären Suchmethode wird die Sammlung wiederholt in zwei Hälften geteilt und das Schlüsselelement wird in der linken oder rechten Hälfte der Sammlung durchsucht, je nachdem, ob der Schlüssel kleiner oder größer als das mittlere Element der Sammlung ist.
Ein einfacher binärer Suchalgorithmus lautet wie folgt:
- Berechnen Sie das mittlere Element der Sammlung.
- Vergleichen Sie die Schlüsselelemente mit dem mittleren Element.
- Wenn key = middle element, geben wir die mittlere Indexposition für den gefundenen Schlüssel zurück.
- Sonst Wenn Schlüssel> mittleres Element, liegt der Schlüssel in der rechten Hälfte der Sammlung. Wiederholen Sie daher die Schritte 1 bis 3 in der unteren (rechten) Hälfte der Sammlung.
- Sonst Schlüssel
Wie Sie aus den obigen Schritten ersehen können, wird bei der binären Suche die Hälfte der Elemente in der Sammlung unmittelbar nach dem ersten Vergleich ignoriert.
Beachten Sie, dass die gleiche Abfolge von Schritten sowohl für die iterative als auch für die rekursive binäre Suche gilt.
Lassen Sie uns den binären Suchalgorithmus anhand eines Beispiels veranschaulichen.
Zum BeispielNehmen Sie das folgende sortierte Array mit 10 Elementen.
Berechnen wir die mittlere Position des Arrays.
Mitte = 0 + 9/2 = 4
# 1) Schlüssel = 21
Zuerst vergleichen wir den Schlüsselwert mit dem (mid) -Element und stellen fest, dass der Elementwert bei mid = 21 liegt.
Wir finden also diesen Schlüssel = (Mitte). Daher befindet sich der Schlüssel an Position 4 im Array.
# 2) Schlüssel = 25
Wir vergleichen zuerst den Schlüsselwert mit mid. As (21<25), we will directly search for the key in the upper half of the array.
Jetzt finden wir wieder die Mitte für die obere Hälfte des Arrays.
Mitte = 4 + 9/2 = 6
Der Wert an Position (Mitte) = 25
Jetzt vergleichen wir das Schlüsselelement mit dem Mittelelement. Also (25 == 25), daher haben wir den Schlüssel an Position (Mitte) = 6 gefunden.
Daher teilen wir das Array wiederholt und durch Vergleichen des Schlüsselelements mit der Mitte entscheiden wir, in welcher Hälfte nach dem Schlüssel gesucht werden soll. Die binäre Suche ist in Bezug auf Zeit und Korrektheit effizienter und auch viel schneller.
Implementierung der binären Suche Java
Lassen Sie uns unter Verwendung des obigen Algorithmus ein binäres Suchprogramm in Java unter Verwendung des iterativen Ansatzes implementieren. In diesem Programm nehmen wir ein Beispielarray und führen eine binäre Suche für dieses Array durch.
import java.util.*; class Main{ public static void main(String args()){ int numArray() = {5,10,15,20,25,30,35}; System.out.println('The input array: ' + Arrays.toString(numArray)); //key to be searched int key = 20; System.out.println('
Key to be searched=' + key); //set first to first index int first = 0; //set last to last elements in array int last=numArray.length-1; //calculate mid of the array int mid = (first + last)/2; //while first and last do not overlap while( first <= last ){ //if the mid < key, then key to be searched is in the first half of array if ( numArray(mid) last ){ System.out.println('Element is not found!'); } } }
Ausgabe:
Das Eingabearray: (5, 10, 15, 20, 25, 30, 35)
Zu durchsuchender Schlüssel = 20
Element befindet sich am Index: 3
Das obige Programm zeigt einen iterativen Ansatz der binären Suche. Zunächst wird ein Array deklariert und anschließend ein zu durchsuchender Schlüssel definiert.
Nach der Berechnung der Mitte des Arrays wird der Schlüssel mit dem mittleren Element verglichen. Abhängig davon, ob der Schlüssel kleiner oder größer als der Schlüssel ist, wird der Schlüssel in der unteren bzw. oberen Hälfte des Arrays gesucht.
youtube to mp3 converter app kostenloser download
Rekursive binäre Suche in Java
Sie können auch eine binäre Suche mithilfe der Rekursionstechnik durchführen. Hier wird die binäre Suchmethode rekursiv aufgerufen, bis der Schlüssel gefunden oder die gesamte Liste erschöpft ist.
Das Programm, das eine rekursive binäre Suche implementiert, ist unten angegeben:
import java.util.*; class Main{ //recursive method for binary search public static int binary_Search(int intArray(), int low, int high, int key){ //if array is in order then perform binary search on the array if (high>=low){ //calculate mid int mid = low + (high - low)/2; //if key =intArray(mid) return mid if (intArray(mid) == key){ return mid; } //if intArray(mid) > key then key is in left half of array if (intArray(mid) > key){ return binary_Search(intArray, low, mid-1, key);//recursively search for key }else //key is in right half of the array { return binary_Search(intArray, mid+1, high, key);//recursively search for key } } return -1; } public static void main(String args()){ //define array and key int intArray() = {1,11,21,31,41,51,61,71,81,91}; System.out.println('Input List: ' + Arrays.toString(intArray)); int key = 31; System.out.println('
The key to be searched:' + key); int high=intArray.length-1; //call binary search method int result = binary_Search(intArray,0,high,key); //print the result if (result == -1) System.out.println('
Key not found in given list!'); else System.out.println('
Key is found at location: '+result + ' in the list'); } }
Ausgabe:
Eingabeliste: (1, 11, 21, 31, 41, 51, 61, 71, 81, 91
Der zu suchende Schlüssel:
Der Schlüssel befindet sich an Position: 3 in der Liste
Verwenden der Methode Arrays.binarySearch ().
Die Arrays-Klasse in Java bietet eine 'binarySearch ()' - Methode, die die binäre Suche für das angegebene Array durchführt. Diese Methode verwendet das Array und den zu durchsuchenden Schlüssel als Argumente und gibt die Position des Schlüssels im Array zurück. Wenn der Schlüssel nicht gefunden wird, gibt die Methode -1 zurück.
Das folgende Beispiel implementiert die Methode Arrays.binarySearch ().
import java.util.Arrays; class Main{ public static void main(String args()){ //define an array int intArray() = {10,20,30,40,50,60,70,80,90}; System.out.println('The input Array : ' + Arrays.toString(intArray)); //define the key to be searched int key = 50; System.out.println('
The key to be searched:' + key); //call binarySearch method on the given array with key to be searched int result = Arrays.binarySearch(intArray,key); //print the return result if (result <0) System.out.println('
Key is not found in the array!'); else System.out.println('
Key is found at index: '+result + ' in the array.'); } }
Ausgabe:
Das Eingabearray: (10, 20, 30, 40, 50, 60, 70, 80, 90)
Der zu suchende Schlüssel: 50
Der Schlüssel befindet sich am Index: 4 im Array.
Welchen E-Mail-Dienst soll ich verwenden?
Häufig gestellte Fragen
F # 1) Wie schreibt man eine binäre Suche?
Antworten: Die binäre Suche wird normalerweise durchgeführt, indem das Array in zwei Hälften geteilt wird. Wenn der zu durchsuchende Schlüssel größer als das mittlere Element ist, wird die obere Hälfte des Arrays durchsucht, indem das Unterarray weiter geteilt und durchsucht wird, bis der Schlüssel gefunden ist.
Wenn der Schlüssel kleiner als das mittlere Element ist, wird der Schlüssel in der unteren Hälfte des Arrays gesucht.
F # 2) Wo wird die binäre Suche verwendet?
Antworten: Die binäre Suche wird hauptsächlich zum Suchen sortierter Daten in Softwareanwendungen verwendet, insbesondere wenn der Speicherplatz kompakt und begrenzt ist.
F # 3) Was ist das große O der binären Suche?
Antworten: Die zeitliche Komplexität der binären Suche ist O (logn), wobei n die Anzahl der Elemente im Array ist. Die Raumkomplexität der binären Suche ist O (1).
F # 4) Ist die binäre Suche rekursiv?
Antworten: Ja. Da die binäre Suche ein Beispiel für eine Divide-and-Conquer-Strategie ist und mithilfe der Rekursion implementiert werden kann. Wir können das Array in zwei Hälften teilen und dieselbe Methode aufrufen, um die binäre Suche immer wieder durchzuführen.
F # 5) Warum wird es eine binäre Suche genannt?
Antworten: Der binäre Suchalgorithmus verwendet eine Divide-and-Conquer-Strategie, die das Array wiederholt in zwei Hälften oder zwei Teile schneidet. Daher wird es als binäre Suche bezeichnet.
Fazit
Die binäre Suche ist die in Java häufig verwendete Suchtechnik. Voraussetzung für eine binäre Suche ist, dass die Daten in aufsteigender Reihenfolge sortiert werden.
Eine binäre Suche kann entweder iterativ oder rekursiv implementiert werden. Die Arrays-Klasse in Java bietet auch die Methode 'binarySearch', mit der eine binäre Suche für ein Array durchgeführt wird.
In unseren nachfolgenden Tutorials werden wir verschiedene Sortiertechniken in Java untersuchen.
=> Sehen Sie sich hier die einfache Java-Schulungsreihe an.
Literatur-Empfehlungen
- Auswahlsortierung in Java - Auswahlsortierungsalgorithmus und Beispiele
- Einfügungssortierung in Java - Einfügungssortierungsalgorithmus und Beispiele
- Binärer Suchbaum C ++: BST-Implementierung und Operationen mit Beispielen
- Java Interface und Abstract Class Tutorial mit Beispielen
- JAVA-Tutorial für Anfänger: Über 100 praktische Java-Video-Tutorials
- Blasensortierung in Java - Java-Sortieralgorithmen und Codebeispiele
- Java String Tutorial | Java-String-Methoden mit Beispielen
- Was ist Java Vector? Java Vector Class Tutorial mit Beispielen