BSEARCH |
Recherche binaire |
---|---|
Langage C++ | cstdlib (stdlib.h) |
Syntaxe
void *bsearch(const void *key,const void *base, size_t num, size_t width, int(*compare)(const void *elem1,const void void *elem2)) |
Paramètres
Nom | Description |
---|---|
key | Ce paramètre permet d'indiquer l'adresse de la valeur à rechercher |
base | Ce paramètre permet d'indiquer l'adresse du tableau |
num | Ce paramètre permet d'indiquer le nombre d'item que contient le tableau |
width | Ce paramètre permet d'indiquer la taille d'un item du tableau |
compare | Ce paramètre permet d'indiquer la fonction a utiliser pour la comparaison et doit retourner une valeur pour indiquer si les items sont inférieur, égale ou supérieur |
elem1 | Ce paramètre permet d'indiquer le premier item fonction a utiliser pour la comparaison |
elem2 | Ce paramètre permet d'indiquer le deuxième item fonction a utiliser pour la comparaison |
Description
Cette fonction effectue une recherche binaire (dichotomique) dans un tableau.
Remarques
- La fonction bsearch() effectue une recherche binaire sur le tableau trié pointé par base et renvoie un pointeur sur le premier membre correspondant à la clef pointée par key.
- Le nombre d'éléments dans le tableau est spécifié par num, et la taille (en octets) de chaque élément est décrite par width.
- La fonction pointée par compare est utilisée pour comparer un élément du tableau avec la clef. Le format de la fonction de comparaison doit être la suivante :
- Le tableau doit être trié par ordre croissant, l'adresse la plus basse contenant l'élément le plus bas.
- Si le tableau ne contient pas la clef, un pointeur null est renvoyé.
int func_name(const void *arg1, const void *arg2); |
Elle doit renvoyer les valeurs décrites dans le tableau suivant :
Valeur | Description |
---|---|
< 0 (Moins que zéro) | Ces valeurs permettent d'indiquer que arg1 est inférieur à arg2. |
0 (Zéro) | Cette valeur permet d'indiquer que arg1 est égal à arg2. |
> 0 (Supérieur à zéro) | Ces valeurs permettent d'indiquer que arg1 est supérieur à arg2. |
Exemple
Voici quelques exemples typiques de l'utilisation de cette fonction :
Essayer maintenant !
- #include <iostream>
- #include <cstring>
- #include <cstdlib>
-
- #define NUM_ELEMENT_ARRAY 7
- #define STR_LENGTH 5
-
- char strvalues[][STR_LENGTH] = {"ABC","DEF","GHI","JKL","MNO","PQR","STU"};
-
- int main()
- {
- if(NULL != (char*)bsearch("DEF", strvalues, NUM_ELEMENT_ARRAY, STR_LENGTH, (int(*)(const void*,const void*)) strcmp)) {
- std::cout << "DEF est dans le tableau." << std::endl;
- } else {
- std::cout << "DEF n'est pas trouvé dans le tableau." << std::endl;
- }
- return 0;
- }
on obtiendra le résultat suivant :
DEF est dans le tableau.Voir également
Langage de programmation - C++ - Référence de procédures et fonctions - qsort
Langage de programmation - C - Référence de procédures et fonctions - bsearch
Références
Langage C, Edition Micro-Application, Gehard Willms, 2001, ISBN: 2-7429-2008-0, page 730.
Borland C++ for Windows 4.0, Library Reference, Edition Borland, 1993, Part # BCP1240WW21772, page 44.
Dernière mise à jour : Lundi, le 3 août 2015