logo

Programme Python pour la recherche binaire (récursive et itérative)

En un mot, cet algorithme de recherche tire parti d’un ensemble d’éléments déjà triés en ignorant la moitié des éléments après une seule comparaison.

  1. Comparez x avec l’élément du milieu.
  2. Si x correspond à l'élément du milieu, nous renvoyons l'index médian.
  3. Sinon, si x est supérieur à l'élément médian, alors x ne peut se trouver que dans la moitié droite (supérieure) du sous-tableau après l'élément médian. Ensuite, nous appliquons à nouveau l'algorithme pour la moitié droite.
  4. Sinon, si x est plus petit, la cible x doit se trouver dans la moitié gauche (inférieure). Nous appliquons donc l'algorithme pour la moitié gauche.

Programme Python pour la recherche binaire utilisant la récursive

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'>)>



>

algorithmes de recherche

>

Sortir

Element is present at index 3>

Complexité temporelle : O(log n)

Espace auxiliaire : O(logn) [REMARQUE : la récursion crée une pile d'appels]

Programme Python pour la recherche binaire utilisant l'itération

Python3




dactylographié pour chaque
# 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 # signifie que x est présent au milieu sinon : return mid # Si nous atteignons ici, alors l'élément n'était pas présent return -1 # Tableau de test arr = [ 2, 3, 4, 10, 40 ] x = 10 # Résultat de l'appel de fonction = binaire_search(arr, x) if result != -1: print('L'élément est présent à l'index', str(result)) else : print('L'élément n'est pas présent dans le tableau ')>

>

architecture de démarrage à ressort

>

Sortir

Element is present at index 3>

Complexité temporelle : O(log n)

Espace auxiliaire :O(1)

Programme Python pour la recherche binaire utilisant le module bisect intégré

Approche étape par étape :

  • Le code importe le module bisect qui prend en charge la recherche binaire.
  • La fonction binaire_search_bisect() est définie et prend un tableau arr et l'élément à rechercher x comme entrées.
  • La fonction appelle la fonction bisect_left() du module bisect qui trouve la position de l'élément dans le tableau trié arr où x doit être inséré pour maintenir l'ordre de tri. Si l'élément est déjà présent dans le tableau, cette fonction renverra sa position.
  • La fonction vérifie ensuite si l'index renvoyé i est dans la plage du tableau et si l'élément à cet index est égal à x.
  • Si la condition est vraie, alors la fonction renvoie l'index i comme position de l'élément dans le tableau.
  • Si la condition est fausse, alors la fonction renvoie -1 indiquant que l'élément n'est pas présent dans le tableau.
  • Le code définit ensuite un tableau arr et un élément x à rechercher.
  • La fonction binaire_search_bisect() est appelée avec arr et x comme entrées et le résultat renvoyé est stocké dans la variable de résultat.
  • Le code vérifie ensuite si le résultat n'est pas égal à -1, indiquant que l'élément est présent dans le tableau. Si c'est vrai, il imprime la position de l'élément dans le tableau.
  • Si le résultat est égal à -1, alors le code affiche un message indiquant que l'élément n'est pas présent dans le tableau.

Python3




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'>)>

>

essayez catch catch java
>

Sortir

Element is present at index 3>

Complexité temporelle : O(log n)

Espace auxiliaire :O(1)