logo

Algorithme de recherche binaire en C

Une méthode rapide pour localiser un élément particulier dans un tableau trié est une recherche binaire. La tâche initiale de cet algorithme est de comparer la valeur cible à l'élément central du tableau. La recherche est considérée comme réussie si la valeur cible est contenue dans l'élément central. L'algorithme recherchera dans la moitié gauche du tableau si la valeur de l'objectif est inférieure à l'élément central. Le programme analysera la moitié droite du tableau si la valeur de l'objectif est supérieure à l'élément central. Cette méthode est répétée jusqu'à ce que la valeur cible ou la plage de recherche soit épuisée.

Usage:

Les bases de données, les moteurs de recherche et le traitement des données ne sont que quelques-unes des applications qui utilisent la stratégie de recherche binaire.

comment trouver la taille du moniteur

Caractéristiques:

  • Le tableau de valeurs d’entrée doit être trié.
  • À chaque itération, la méthode réduit la plage de recherche de moitié, ce qui la rend particulièrement efficace pour d’énormes ensembles de données.
  • L'algorithme a une complexité temporelle dans le pire des cas O (log n).
  • La recherche de la valeur souhaitée est effectuée par le programme en utilisant une stratégie diviser pour régner.

Voici un exemple simple de l'algorithme de recherche binaire écrit en C :

dateformat.format
 #include int binary_search(int arr[], int left, int right, int target) { while (left <= right) { int mid="left" + (right - left) 2; if (arr[mid]="=" target) return mid; } else < left="mid" 1; right="mid" -1; target not found main() arr[]="{1," 3, 5, 7, 9}; n="sizeof(arr)" sizeof(arr[0]); index="binary_search(arr," 0, 1, target); (index="=" -1) printf('target found
'); at %d
', index); 0; pre> <p> <strong>Output:</strong> </p> <pre> Target found at index 2 </pre> <ul> <li>The binary_search function accepts four arguments: the array to search, the left and right search range boundaries, and the target value to look for. The function returns its index if the desired value can be found; else, it returns -1.</li> <li>The main function creates an array arr and a value target. The binary_search function is then used to search the array for the desired value. The function returns the index where the target value was located if it was, the function returns the index at which it was found. Otherwise, the message &apos;Target not found&apos; is displayed.</li> <li>The binary search algorithm&apos;s implementation is basic. We begin by setting the left border to the array&apos;s initial index and the right boundary to the array&apos;s last index. Once the left boundary is less than or equal to the right border, the array is looped through one more time. We use the formula (left + right) / 2 within the loop to calculate the middle index of the search range. This formula computes the integer value of the middle index&apos;s floor.</li> <li>The centre member of the array is contrasted with the target value. We return the index of the middle element if they are equal. We change the right boundary to be one less than the middle index if the desired value is less than the middle element. If not, we adjust the left border so that it is one more than the centre index. We continue doing this until the goal value is obtained or the search space is filled.</li> <li>The temporal complexity of the binary search algorithm, where n is the array size, is O(log n). This is far more efficient than linear search, which has a temporal complexity of O(n), where n is the size of the array.</li> <li>Finally, the binary search technique offers a useful way to locate a particular member in a sorted array. It is easy to build and has an O(log n) time complexity, making it an efficient approach for large datasets.</li> </ul> <h3>Advantages:</h3> <ul> <li>For large datasets, the binary search algorithm is exceptionally efficient, and it is capable of handling a wide range of input sizes.</li> <li>The algorithm is simple to implement in almost all programming languages.</li> </ul> <h3>Disadvantages:</h3> <ul> <li>Before using the binary search technique, the input array must be sorted, which takes more time and memory.</li> <li>The algorithm cannot be applied to unsorted arrays.</li> <li>The algorithm may yield inaccurate results if the input array is not sorted.</li> <li>The binary search algorithm is not appropriate for tiny datasets since the technique&apos;s overhead may outweigh its benefits.</li> </ul> <h2>Conclusion:</h2> <p>A sorted array can be quickly searched for a specific element using the binary search technique. It employs a divide-and-conquer strategy to cut the search range in half with each iteration, allowing it to be highly efficient for large datasets. However, before using the binary search technique, the input array must be sorted, which takes extra time and memory. The binary search algorithm is a sophisticated data processing tool that is widely utilised in various sectors.</p> <hr></=>
  • La fonction binaire_search accepte quatre arguments : le tableau à rechercher, les limites de la plage de recherche gauche et droite et la valeur cible à rechercher. La fonction renvoie son index si la valeur souhaitée peut être trouvée ; sinon, il renvoie -1.
  • La fonction main crée un tableau arr et une valeur cible. La fonction binaire_search est ensuite utilisée pour rechercher dans le tableau la valeur souhaitée. La fonction renvoie l'index où se trouvait la valeur cible si c'était le cas, la fonction renvoie l'index auquel elle a été trouvée. Sinon, le message « Cible non trouvée » s'affiche.
  • L'implémentation de l'algorithme de recherche binaire est basique. Nous commençons par définir la bordure gauche sur l'index initial du tableau et la bordure droite sur le dernier index du tableau. Une fois que la limite gauche est inférieure ou égale à la bordure droite, le tableau est bouclé une fois de plus. Nous utilisons la formule (gauche + droite) / 2 dans la boucle pour calculer l'index médian de la plage de recherche. Cette formule calcule la valeur entière du plancher de l'indice intermédiaire.
  • Le membre central du tableau contraste avec la valeur cible. Nous renvoyons l'index de l'élément du milieu s'ils sont égaux. Nous modifions la limite droite pour qu'elle soit inférieure d'une unité à l'index du milieu si la valeur souhaitée est inférieure à l'élément du milieu. Sinon, nous ajustons la bordure gauche pour qu'elle soit une de plus que l'index central. Nous continuons à faire cela jusqu'à ce que la valeur objectif soit obtenue ou que l'espace de recherche soit rempli.
  • La complexité temporelle de l'algorithme de recherche binaire, où n est la taille du tableau, est O(log n). C'est bien plus efficace que la recherche linéaire, qui a une complexité temporelle de O(n), où n est la taille du tableau.
  • Enfin, la technique de recherche binaire offre un moyen utile de localiser un membre particulier dans un tableau trié. Il est facile à construire et a une complexité temporelle O(log n), ce qui en fait une approche efficace pour les grands ensembles de données.

Avantages :

  • Pour les grands ensembles de données, l’algorithme de recherche binaire est exceptionnellement efficace et est capable de gérer une large gamme de tailles d’entrée.
  • L'algorithme est simple à implémenter dans presque tous les langages de programmation.

Désavantages:

  • Avant d'utiliser la technique de recherche binaire, le tableau d'entrée doit être trié, ce qui prend plus de temps et de mémoire.
  • L'algorithme ne peut pas être appliqué aux tableaux non triés.
  • L'algorithme peut donner des résultats inexacts si le tableau d'entrée n'est pas trié.
  • L'algorithme de recherche binaire n'est pas approprié pour les petits ensembles de données, car la surcharge de la technique peut dépasser ses avantages.

Conclusion:

Un tableau trié peut être rapidement recherché pour un élément spécifique à l'aide de la technique de recherche binaire. Il utilise une stratégie diviser pour régner pour réduire la plage de recherche de moitié à chaque itération, ce qui lui permet d'être très efficace pour les grands ensembles de données. Cependant, avant d'utiliser la technique de recherche binaire, le tableau d'entrée doit être trié, ce qui prend plus de temps et de mémoire. L’algorithme de recherche binaire est un outil de traitement de données sophistiqué largement utilisé dans divers secteurs.