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.
- Comparez x avec l’élément du milieu.
- Si x correspond à l'élément du milieu, nous renvoyons l'index médian.
- 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.
- 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)