Arrays.binarySearch() Die Methode durchsucht das angegebene Array des angegebenen Datentyps mithilfe des binären Suchalgorithmus nach dem angegebenen Wert. Das Array muss nach sortiert sein Arrays.sort() Methode, bevor Sie diesen Aufruf tätigen. Wenn es nicht sortiert ist, sind die Ergebnisse undefiniert. Wenn das Array mehrere Elemente mit dem angegebenen Wert enthält, gibt es keine Garantie, welches gefunden wird. Lassen Sie uns wie folgt durch die untenstehende Abbildung gleiten.
Illustration:
Searching for 35 in byteArr[] = {10,20,15,22,35} will give result as 4 as it is the index of 35 Searching for g in charArr[] = {'g','p','q','c','i'} will give result as 0 as it is the index of 'g' Searching for 22 in intArr[] = {10,20,15,22,35}; will give result as 3 as it is the index of 22 Searching for 1.5 in doubleArr[] = {10.2,15.1,2.2,3.5} will give result as -1 as it is the insertion point of 1.5 Searching for 35.0 in floatArr[] = {10.2f,15.1f,2.2f,3.5f} will give result as -5 as it is the insertion point of 35.0 Searching for 5 in shortArr[] = {10,20,15,22,35} will give result as -1 as it is the insertion point of 5> Es ist die einfachste und effizienteste Methode, ein Element in einem sortierten Array in Java zu finden
Syntax:
public static int binarySearch(data_type arr, data_type key)>
Erinnern: Hier kann der Datentyp jeder der primitiven Datentypen sein, z. B. Byte, Char, Double, Int, Float, Short, Long und sogar Object.
Parameter:
- Das zu durchsuchende Array
- Der Wert, nach dem gesucht werden soll
Rückgabetyp: Index des Suchschlüssels, sofern dieser im Array enthalten ist; andernfalls (-(Einfügepunkt) – 1). Der Einfügepunkt ist als der Punkt definiert, an dem der Schlüssel in das Array eingefügt würde: der Index des ersten Elements, das größer als der Schlüssel ist, oder a.length, wenn alle Elemente im Array kleiner als der angegebene Schlüssel sind. Beachten Sie, dass dies garantiert, dass der Rückgabewert genau dann>= 0 ist, wenn der Schlüssel gefunden wird.
Folgende wichtige Punkte sind zu beachten:
- Wenn die Eingabeliste nicht sortiert ist, sind die Ergebnisse undefiniert.
- Bei Duplikaten gibt es keine Garantie, welches Duplikat gefunden wird.
Wie oben haben wir bereits besprochen, dass wir diesen Algorithmus auch verwenden können Arrays.binarysearch() vs Collections.binarysearch() . Arrays.binarysearch() funktioniert für Arrays, die auch einen primitiven Datentyp haben können. Sammlungen .binarysearch() funktioniert für Objekte wie Sammlungen Anordnungsliste Und LinkedList .
Beispiel 1:
Java
Pyspark SQL
// Java program to demonstrate working of Arrays.> // binarySearch() in a sorted array> // Importing Arrays class from> // java.util package> import> java.util.Arrays;> // Main class> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Declaring and initializing byte arrays> >// to search over them> >byte> byteArr[] = {>10>,>20>,>15>,>22>,>35> };> >char> charArr[] = {>'g'>,>'p'>,>'q'>,>'c'>,>'i'> };> >int> intArr[] = {>10>,>20>,>15>,>22>,>35> };> >double> doubleArr[] = {>10.2>,>15.1>,>2.2>,>3.5> };> >float> floatArr[] = {>10>.2f,>15>.1f,>2>.2f,>3>.5f };> >short> shortArr[] = {>10>,>20>,>15>,>22>,>35> };> >// Using sort() method of Arrays class> >// and passing arrays to be sorted as in arguments> >Arrays.sort(byteArr);> >Arrays.sort(charArr);> >Arrays.sort(intArr);> >Arrays.sort(doubleArr);> >Arrays.sort(floatArr);> >Arrays.sort(shortArr);> >// Primitive datatypes> >byte> byteKey =>35>;> >char> charKey =>'g'>;> >int> intKey =>22>;> >double> doubleKey =>1.5>;> >float> floatKey =>35>;> >short> shortKey =>5>;> >// Now in sorted array we will fetch and> >// return elements/indiciesaccessing indexes to show> >// array is really sorted> >// Print commands where we are implementing> >System.out.println(> >byteKey +>' found at index = '> >+ Arrays.binarySearch(byteArr, byteKey));> >System.out.println(> >charKey +>' found at index = '> >+ Arrays.binarySearch(charArr, charKey));> >System.out.println(> >intKey +>' found at index = '> >+ Arrays.binarySearch(intArr, intKey));> >System.out.println(> >doubleKey +>' found at index = '> >+ Arrays.binarySearch(doubleArr, doubleKey));> >System.out.println(> >floatKey +>' found at index = '> >+ Arrays.binarySearch(floatArr, floatKey));> >System.out.println(> >shortKey +>' found at index = '> >+ Arrays.binarySearch(shortArr, shortKey));> >}> }> |
>
Was ist Desktop-INI?
>Ausgabe
35 found at index = 4 g found at index = 1 22 found at index = 3 1.5 found at index = -1 35.0 found at index = -5 5 found at index = -1>
Komplexitätsanalyse:
Zeitkomplexität:
Die zeitliche Komplexität der Methode Arrays.binarySearch() beträgt O(log n), wobei n die Länge des Eingabearrays ist. Dies liegt daran, dass die Methode einen binären Suchalgorithmus verwendet, um das Zielelement im sortierten Array zu finden.
Hilfsraum:
Der von der Methode Arrays.binarySearch() verwendete Hilfsraum ist O(1), da außer dem Eingabearray kein zusätzlicher Raum für die Durchführung des Suchvorgangs erforderlich ist.
Es gibt Varianten dieser Methode, bei denen wir auch den Array-Bereich angeben können, in dem gesucht werden soll. Wir werden dies sowie die Suche in einem Objekt-Array in weiteren Beiträgen besprechen.
Beispiel 2:
Java
// Java Program to Illustrate binarySearch() method> // of Collections class> // Importing required classes> import> java.util.ArrayList;> import> java.util.Collections;> import> java.util.List;> // Main class> public> class> GFG {> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Creating empty List> >List al =>new> ArrayList();> >// Adding elements to the List> >al.add(>12>);> >al.add(>53>);> >al.add(>23>);> >al.add(>46>);> >al.add(>54>);> >// Using binarySearch() method of Collections class> >// over random inserted element and storing the> >// index> >int> index = Collections.binarySearch(al,>23>);> >// Print and display the index> >System.out.print(index);> >}> }> |
>
>
iPhone-Emojis auf Android-HandyAusgabe
2>
Komplexitätsanalyse:
Zeitkomplexität:
Die zeitliche Komplexität der Methode „binarySearch()“ in der Klasse „Collections“ beträgt O(log n), wobei n die Anzahl der Elemente in der Liste ist.
Hilfsraum:
Die Methode „binarySearch()“ in der Klasse „Collections“ benötigt keinen zusätzlichen Speicherplatz und weist daher eine Hilfsraumkomplexität von O(1) auf.