Fonction de bibliothèque C -bsearch()

Bibliothèque standard C - <stdlib.h>

bsearch est une fonction de la bibliothèque standard C, utilisée pour effectuer une recherche binaire dans un tableau trié. Sa définition se trouve dans le fichier d'en-tête stdlib.h.

Fonctions de bibliothèque Cvoid *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))Pournitems, effectuez une recherche binaire sur un tableau d'objets,basePointe vers le tableau en cours de recherche,keyPointe vers l'élément à rechercher,sizeSpécifie la taille de chaque élément du tableau.

Le contenu du tableau doit être trié par ordre croissant seloncomparla fonction de comparaison correspondante.

Déclaration

Voici la déclaration de la fonction bsearch().

void *bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (*compar)(const void *, const void *));

Paramètre

  • key: Pointeur vers l'élément cible à rechercher.
  • base: Pointeur vers la position de départ du tableau.
  • nmemb: Nombre d'éléments dans le tableau.
  • size: La taille de chaque élément (en bytes).
  • compar: Pointeur vers la fonction de comparaison, qui est utilisée pour comparer deux éléments.

Valeur de retour

  • Si un élément correspondant est trouvé,bsearchrenvoie un pointeur vers cet élément.
  • Si aucun élément correspondant n'est trouvé,bsearchreturnNULL。

Fonction de comparaison

La fonction de comparaison doit correspondre à la signature suivante :

int compar(const void *a, const void *b);

La fonction renvoie :

  • Une valeur négative, siainférieur àb。
  • Zéro, siaequalsb。
  • Une valeur positive, siasupérieur àb。

Exemple

L'exemple suivant montre l'utilisation de la fonction bsearch().

Exemple

#include <stdio.h> #include <stdlib.h> // Fonction de comparaison, utilisée pour la recherche bsearch int cmpfunc(const void * a, const void * b) { return (*(int*)a - *(int*)b); } int main() { int values[] = { 5, 20, 29, 32, 63 }; int key = 32; int *item; // Calculer la longueur du tableau size_t array_size = sizeof(values) / sizeof(values[0]); // Utiliser bsearch pour trouver la valeur 32 dans le tableau item = (int*) bsearch(&key, values, array_size, sizeof(int), cmpfunc); // Vérifier le résultat de la recherche et l'afficher if (item != NULL) { printf("Élément trouvé = %d\n", *item); } else { printf("L'élément = %d est introuvable\n", key); } return 0; }

Compilons et exécutons le programme ci-dessus, ce qui produira le résultat suivant :

Found item = 32

Bibliothèque standard C - <stdlib.h>

autres extensions