Heim >Java >javaLernprogramm >BinarySearch() in Java
In Java ist BinarySearch() eine Methode, die bei der Suche nach einem bestimmten Schlüsselelement aus mehreren Elementen mithilfe des binären Suchalgorithmus hilft. Um diese Operation auszuführen, müssen Elemente in aufsteigender Reihenfolge sortiert werden. Wenn es nicht sortiert ist, kann es mit der Methode Arrays.sort(arr) sortiert werden. Andernfalls werden die Ergebnisse als undefiniert bezeichnet. Im Vergleich zur linearen Suche gilt die binäre Suche als schneller. Aus diesem Grund wird die zeitliche Komplexität der binären Suche als O(log n) bezeichnet. Darüber hinaus kann die Methode „binarySearch()“ aus dem Paket java.util.Arrays instanziiert werden. Weitere Details zur Methode „binarySearch()“ werden in den folgenden Abschnitten besprochen.
Syntax:
Starten Sie Ihren kostenlosen Softwareentwicklungskurs
Webentwicklung, Programmiersprachen, Softwaretests und andere
public static int binarySearch(Object[] a, Object key)
Hier sind die Parameter a und key das zu durchsuchende Array bzw. der zu findende Wert.
Die MethodebinarySearch() gibt den Index des Schlüsselelements zurück, nach dem gesucht wurde. Falls das Schlüsselelement nicht gefunden wird, wird ein Einfügepunkt an der Stelle zurückgegeben, an der das Schlüsselelement eingefügt worden wäre. Wenn das Schlüsselelement der Suche nicht mit anderen Elementen im Array vergleichbar ist, wird eine Ausnahme namens ClassCastException ausgelöst.
Lassen Sie uns sehen, wie diese Methode in Java funktioniert:
Im Folgenden finden Sie Beispiele einiger Programme für die BinarySearch()-Methode.
Code:
import java.util.Arrays; public class BinarySearchExample { public static void main(String[] args) { //create a byte array byte ba[] = {05, 10, 15, 20, 25, 30}; //create a character array char ca[] = {'a', 'n', 's', 'p', 'v', 'i', 'd'}; //create an integer array int ia[] = { 10, 20, 15, 22, 35}; //create a double array double da[] = {10.1 , 15.34 , 22.25, 13.5}; //create a float array float fa[] = {13.2f, 25.1f , 22.2f , 43.5f }; //sort all the arrays that created above Arrays.sort(ba); Arrays.sort(ca); Arrays.sort(ia); Arrays.sort(da); Arrays.sort(fa); //enter the key elements that has to be searched in the array byte bKey = 15; char cKey = 'i'; int iKey = 22; double dKey = 15.34; float fKey = 22.2f; System.out.println("Element "+ bKey + " is found at the position of " + Arrays.binarySearch(ba,bKey) ); System.out.println("Element "+ cKey + " is found at the position of " + Arrays.binarySearch(ca,cKey) ); System.out.println("Element "+ iKey + " is found at the position of " + Arrays.binarySearch(ia,iKey) ); System.out.println("Element "+ dKey + " is found at the position of " + Arrays.binarySearch(da,dKey) ); System.out.println("Element "+ fKey + " is found at the position of " + Arrays.binarySearch(fa,fKey) ); } }
Ausgabe:
Bestimmte Arrays verschiedener Typen wie Zeichen, Ganzzahl, Float, Double und Bytes werden erstellt, nachdem die Arrays mithilfe von Arrays in der obigen Methode program.Sort() sortiert wurden. Elemente, die in den Arrays gesucht werden müssen, werden deklariert. Anschließend wird der Index des gesuchten Elements mit der Methode Arrays.binarySearch() gedruckt.
Angenommen, es wird ein Schlüsselelement angegeben, das im Array nicht vorhanden ist. Was wird die Ausgabe sein??
Um das herauszufinden, ändern wir den Code der Schlüsselelemente wie unten gezeigt.
byte bKey = 15;
char cKey = ‘i’;
int iKey = 89;
double dKey = 15,34;
float fKey = 22.2f;
Das heißt, iKey=89 ist nicht im Array vorhanden, dann wird die Ausgabe wie folgt angezeigt.
Wie wir sehen können, wird die Position als -6 gedruckt. Denn wenn ein Element gesucht und nicht gefunden wird, wird der negative Wert des Index zurückgegeben, wenn dieses Element vorhanden war. d.h. int ia[] = { 10, 20, 15, 22, 35} ist das gegebene Array. Wenn 89 vorhanden wäre, wäre das Array int ia[] = { 10, 20, 15, 22, 35, 89};
Es ist deutlich zu erkennen, dass der Index 6 gewesen wäre. Da er im ursprünglichen Array nicht vorhanden ist, wird der negative Wert dieses bestimmten Index in der obigen Ausgabe zurückgegeben.
Eine binäre Suche kann auch mit Hilfe der Rekursion durchgeführt werden, wie unten gezeigt.
Code:
//sample class class BinarySearchExample{ public static int binarySearch(int a[], int f, int l, int k){ //if last element is greater than or equal to first element if (l>=f) { //find the mid int m = f + (l - f)/2; //if the key element that is searching is found in middle position, return mid position if (a[m] == k) { return m; } //if key element is less than element in middle position, search the left <u>subarray</u> if (a[m] > k){ return binarySearch(a, f, m-1, k); } //if key element is greater than the element in middle position, search the right <u>subarray</u> else{ return binarySearch(a, m+1, l, k); } } return -1; } public static void main(String args[]){ //initialise the array int a[] = {34,45,54,68,79}; int k = 68; int l = a.length-1; //store the position in variable res int res = binarySearch(a,0,l,k); if (res == -1) System.out.println("Sorry!! Can't find the element....!"); else System.out.println("Element is found at the position: "+res); } }
Ausgabe:
Im obigen Programm wird zunächst ein Array erstellt und auch das herauszufindende Element deklariert. Mithilfe der Methode „binarySearch()“ wird die Position der Schlüsselelemente ermittelt. Angenommen, das Element wird nicht gefunden, wird die Meldung „Leider!!! Das Element wurde nicht gefunden“ gedruckt.
binarySearch() ist eine Java-Methode, die dabei hilft, mithilfe des binären Suchalgorithmus ein bestimmtes Schlüsselelement unter mehreren im Array verfügbaren Elementen zu finden. Funktionsweise und Beispiele dieser Methode werden in diesem Dokument ausführlich erläutert.
Dies ist eine Anleitung zu BinarySearch() in Java. Hier diskutieren wir, wie die BinarySearch()-Methode in Java funktioniert, und Beispiele mit Code-Implementierung. Sie können auch unsere anderen empfohlenen Artikel durchsehen, um mehr zu erfahren –
Das obige ist der detaillierte Inhalt vonBinarySearch() in Java. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!