logo

Python-programma voor binair zoeken (recursief en iteratief)

In een notendop maakt dit zoekalgoritme gebruik van een verzameling elementen die al gesorteerd is door na slechts één vergelijking de helft van de elementen te negeren.

  1. Vergelijk x met het middelste element.
  2. Als x overeenkomt met het middelste element, retourneren we de middenindex.
  3. Anders, als x groter is dan het middenelement, kan x alleen in de rechter (grotere) halve subarray na het middenelement liggen. Vervolgens passen we het algoritme opnieuw toe voor de rechterhelft.
  4. Anders, als x kleiner is, moet het doel x in de linker (onderste) helft liggen. Dus passen we het algoritme toe voor de linkerhelft.

Python-programma voor binair zoeken met behulp van recursief

Python3






# Python 3 program for recursive binary search.> # Modifications needed for the older Python 2 are found in comments.> # Returns index of x in arr if present, else -1> def> binary_search(arr, low, high, x):> ># Check base case> >if> high>>=> low:> >mid>=> (high>+> low)>/>/> 2> ># If 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> >elif> arr[mid]>x:> >return> binary_search(arr, low, mid>-> 1>, x)> ># Else the element can only be present in right subarray> >else>:> >return> binary_search(arr, mid>+> 1>, high, x)> >else>:> ># Element is not present in the array> >return> ->1> # Test array> arr>=> [>2>,>3>,>4>,>10>,>40> ]> x>=> 10> # Function call> result>=> binary_search(arr,>0>,>len>(arr)>->1>, x)> if> result !>=> ->1>:> >print>(>'Element is present at index'>,>str>(result))> else>:> >print>(>'Element is not present in array'>)>

>

wat is obj in java

>

Uitvoer

Element is present at index 3>

Tijdcomplexiteit : O(log n)

Hulpruimte : O(logn) [OPMERKING: Recursie creëert call-stack]

Python-programma voor binair zoeken met behulp van iteratief

Python3

partiële afgeleide van latex




# Iterative Binary Search Function> # It returns index of x in given array arr if present,> # else returns -1> def> binary_search(arr, x):> >low>=> 0> >high>=> len>(arr)>-> 1> >mid>=> 0> >while> low <>=> high:> >mid>=> (high>+> low)>/>/> 2> ># If x is greater, ignore left half> >if> arr[mid] low = mid + 1 # If x is smaller, ignore right half elif arr[mid]>x: high = mid - 1 # betekent dat x midden aanwezig is anders: return mid # Als we hier komen, dan was het element niet aanwezig return -1 # Testarray arr = [ 2, 3, 4, 10, 40 ] x = 10 # Functieaanroep resultaat = binary_search(arr, x) if resultaat != -1: print('Element is aanwezig in index', str(resultaat)) else: print('Element is niet aanwezig in array ')>

>

>

Uitvoer

Element is present at index 3>

Tijdcomplexiteit : O(log n)

Hulpruimte : O(1)

Python-programma voor binair zoeken met behulp van de ingebouwde bisect-module

Stap voor stap aanpak:

palindroom in Java
  • De code importeert de bisect-module die ondersteuning biedt voor binair zoeken.
  • De functie binary_search_bisect() is gedefinieerd, waarbij een array arr en het element om x te zoeken als invoer nodig zijn.
  • De functie roept de functie bisect_left() van de bisect-module aan, die de positie van het element in de gesorteerde array arr vindt, waar x moet worden ingevoegd om de gesorteerde volgorde te behouden. Als het element al in de array aanwezig is, retourneert deze functie zijn positie.
  • De functie controleert vervolgens of de geretourneerde index i binnen het bereik van de array ligt en of het element bij die index gelijk is aan x.
  • Als de voorwaarde waar is, retourneert de functie de index i als de positie van het element in de array.
  • Als de voorwaarde onwaar is, retourneert de functie -1, wat aangeeft dat het element niet aanwezig is in de array.
  • De code definieert vervolgens een array arr en een element x om te zoeken.
  • De functie binary_search_bisect() wordt aangeroepen met arr en x als invoer en het geretourneerde resultaat wordt opgeslagen in de resultaatvariabele.
  • De code controleert vervolgens of het resultaat niet gelijk is aan -1, wat aangeeft dat het element aanwezig is in de array. Indien waar, wordt de positie van het element in de array afgedrukt.
  • Als het resultaat gelijk is aan -1, drukt de code een bericht af dat het element niet aanwezig is in de array.

Python3




array in Java
import> bisect> > def> binary_search_bisect(arr, x):> >i>=> bisect.bisect_left(arr, x)> >if> i !>=> len>(arr)>and> arr[i]>=>=> x:> >return> i> >else>:> >return> ->1> > > # Test array> arr>=> [>2>,>3>,>4>,>10>,>40>]> x>=> 10> > # Function call> result>=> binary_search_bisect(arr, x)> > if> result !>=> ->1>:> >print>(>'Element is present at index'>,>str>(result))> else>:> >print>(>'Element is not present in array'>)>

>

>

Uitvoer

Element is present at index 3>

Tijdcomplexiteit : O(log n)

Hulpruimte : O(1)