logo

Java-program til binær søgning (rekursiv og iterativ)

Så som vi alle ved binær søgning er en af ​​de søgealgoritmer, der oftest anvendes i forbindelse med datastrukturer, hvor det excentriske mål ikke er at krydse hele arrayet. Her skal array sorteres, da vi tjekker det midterste element og ignorerer halvdelen af ​​arrayet, som ikke er til nogen nytte ifølge talsystemet. Vi ignorerer stort set halvdelen af ​​elementerne lige efter en sammenligning. Så bliver vi ved med at iterere, indtil elementet er fundet, eller lander på en konklusion om, at elementet ikke er til stede i arrayet.

Algoritmer:

  1. Sammenlign x med det midterste element.
  2. Hvis x matcher med det midterste element, returnerer vi midtindekset.
  3. Ellers Hvis x er større end det midterste element, så kan x kun ligge i den højre halve undergruppe efter midtelementet. Så vi går igen for højre halvdel.
  4. Ellers (x er mindre) går igen for venstre halvdel.

Eksempel 1



Java


python skriv json til fil



omdøbe mappe linux
// Java Program to Illustrate> // Iterative Binary Search> // Main class> // BinarySearch> class> GFG {> >// Method 1> >// Returns index of x> >// if it is present in arr[],> >// else return -1> >int> binarySearch(>int> arr[],>int> x)> >{> >int> l =>0>, r = arr.length ->1>;> >// Checking element in whole array> >while> (l <= r) {> >int> m = l + (r - l) />2>;> >// Check if x is present at mid> >if> (arr[m] == x)> >return> m;> >// If x greater, ignore left half> >if> (arr[m] l = m + 1; // If x is smaller, // element is on left side // so ignore right half else r = m - 1; } // If we reach here, // element is not present return -1; } // Method 2 // Main driver method public static void main(String args[]) { GFG ob = new GFG(); // Input array int arr[] = { 2, 3, 4, 10, 40 }; // Length of array int n = arr.length; // Element to be checked if present or not int x = 10; // Calling the method 1 and // storing result int result = ob.binarySearch(arr, x); // Element present if (result == -1) // Print statement System.out.println('Element not present'); // Element not present else // Print statement System.out.println('Element found at index ' + result); } }>

>

>

Produktion

java initialize array
Element found at index 3>

Tidskompleksitet : O(log n)

Hjælpeplads : O(1)

Eksempel 2

Java




// Java Program to Illustrate Recursive Binary Search> // Importing required classes> import> java.util.*;> // Main class> class> GFG {> >// Method 1> >// Recursive binary search> >// Returns index of x if it is present> >// in arr[l..r], else return -1> >int> binarySearch(>int> arr[],>int> l,>int> r,>int> x)> >{> >// Restrict the boundary of right index> >// and the left index to prevent> >// overflow of indices> >if> (r>= l && l<= arr.length ->1>) {> >int> mid = l + (r - l) />2>;> >// If the element is present> >// at the middle itself> >if> (arr[mid] == x)> >return> mid;> >// If element is smaller than mid, then it can> >// only be present in left subarray> >if> (arr[mid]>x)> >return> binarySearch(arr, l, mid ->1>, x);> >// Else the element can only be present> >// in right subarray> >return> binarySearch(arr, mid +>1>, r, x);> >}> >// We reach here when element is not present in> >// array> >return> ->1>;> >}> >// Method 2> >// Main driver method> >public> static> void> main(String args[])> >{> >// Creating object of above class> >GFG ob =>new> GFG();> >// Custom input array> >int> arr[] = {>2>,>3>,>4>,>10>,>40> };> >// Length of array> >int> n = arr.length;> >// Custom element to be checked> >// whether present or not> >int> x =>10>;> >// Calling above method> >int> result = ob.binarySearch(arr,>0>, n ->1>, x);> >// Element present> >if> (result == ->1>)> >// Print statement> >System.out.println(>'Element not present'>);> >// Element not present> >else> >// Print statement> >System.out.println(>'Element found at index '> >+ result);> >}> }>

systemsoftware
>

>

prøv at fange java
Produktion

Element found at index 3>

Tidskompleksitet : O(log n)

Hjælpeplads : O(1)