CodeGym /Cours Java /Python SELF FR /Recherche binaire récursive

Recherche binaire récursive

Python SELF FR
Niveau 57 , Leçon 2
Disponible

3.1 Principe de fonctionnement de la recherche binaire récursive

La recherche binaire est un algorithme pour trouver un élément dans un tableau trié, qui fonctionne sur le principe du "diviser pour régner". Il compare l'élément recherché avec l'élément au milieu du tableau et décide dans quelle moitié du tableau continuer la recherche. La recherche binaire récursive répète ce processus en s'appelant elle-même avec des limites du tableau mises à jour.

Étapes de l'algorithme :

  1. Compare l'élément recherché avec l'élément au milieu du tableau.
  2. Si l'élément au milieu correspond à l'élément recherché, retourne son index.
  3. Si l'élément recherché est plus petit, répète la recherche dans la moitié gauche du tableau.
  4. Si l'élément recherché est plus grand, répète la recherche dans la moitié droite du tableau.
  5. Répète le processus jusqu'à trouver l'élément ou épuiser le tableau.

Implémentation de la recherche binaire récursive

Exemple en Python :


def binary_search_recursive(arr, target, left, right):
    if left > right:
        return -1  # Cas de base: élément non trouvé
            
    mid = (left + right) // 2  # Trouver le milieu du tableau
            
    if arr[mid] == target:
        return mid  # Cas de base: élément trouvé
    elif arr[mid] < target:
        return binary_search_recursive(arr, target, mid + 1, right)  # Cherche dans la moitié droite
    else:
        return binary_search_recursive(arr, target, left, mid - 1)  # Cherche dans la moitié gauche
        
# Exemple d'utilisation :
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 7
result = binary_search_recursive(arr, target, 0, len(arr) - 1)
print(f"Élément trouvé à la position: {result}")  # Affichera : Élément trouvé à la position : 6
        

3.2 Comparaison avec la recherche binaire itérative

Recherche binaire itérative :


def binary_search_iterative(arr, target):
    left, right = 0, len(arr) - 1
            
    while left <= right:
        mid = (left + right) // 2
                
        if arr[mid] == target:
            return mid
        elif arr[mid] < target:
            left = mid + 1
        else:
            right = mid - 1
            
    return -1  # Élément non trouvé
        
# Exemple d'utilisation :
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 7
result = binary_search_iterative(arr, target)
print(f"Élément trouvé à la position: {result}")  # Affichera : Élément trouvé à la position : 6
        

Comparaison :

Simplicité de l'implémentation :

  • L'algorithme récursif est généralement plus simple et plus court, mais nécessite une compréhension des appels récursifs.
  • L'algorithme itératif utilise une boucle, ce qui peut être plus simple pour les programmeurs débutants.

Mémoire :

  • L'algorithme récursif utilise la pile d'appels, ce qui peut conduire à une augmentation de l'utilisation mémoire avec de grands tableaux.
  • L'algorithme itératif utilise une quantité constante de mémoire, ce qui le rend plus efficace en termes d'utilisation mémoire.

Performance :

  • Les deux algorithmes ont une complexité temporelle de O(log n).
  • L'algorithme récursif peut être plus lent en raison des surcoûts liés aux appels récursifs, surtout si la profondeur de récursion est élevée.

3.3 Exemples de problèmes pour la recherche binaire récursive

La recherche binaire récursive est un algorithme puissant qui aide à trouver rapidement des éléments dans des tableaux triés. Il repose sur le principe du "diviser pour régner" et utilise la récursivité pour diviser le problème en sous-problèmes plus petits.

La comparaison entre les approches récursive et itérative montre que chacune d'elles a ses avantages et ses inconvénients selon la tâche précise. Comprendre ces algorithmes et leur application permet de résoudre efficacement les problèmes de recherche en programmation.

Par exemple :

Recherche d'un élément dans un tableau trié :

Recherche d'un élément spécifique dans un tableau de nombres, par exemple, évaluation des tests, recherche dans une base de données par clés triées et ainsi de suite.

Vérification de la présence d'un élément :

Vérification si une valeur donnée est présente dans une liste d'utilisateurs autorisés, d'identifiants, et ainsi de suite.

Recherche de la valeur la plus proche :

Recherche de l'élément le plus proche d'une valeur donnée dans un tableau, par exemple, lors de la recherche du magasin le plus proche, station et ainsi de suite.

Optimisation :

Résolution de problèmes nécessitant la recherche d'une valeur optimale dans un tableau trié, par exemple, trouver un point de minimum ou maximum dans des fonctions.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION