NOMBRE

bsearch - búsqueda binaria en un arreglo (array) ordenado

BIBLIOTECA

Biblioteca Estándar C ( libc, -lc)

SINOPSIS

#include <stdlib.h>
void *bsearch(const void key[.size], const void base[.size * .nmemb],
              size_t nmemb, size_t size,
              int (*compar)(const void [.size], const void [.size]));

DESCRIPCIÓN

La función bsearch() busca en un arreglo de nmemb elementos, donde el primer elemento está apuntado por base, un elemento que coincida con el objecto apuntado por key. El tamaño de cada elementos del arreglo es especificado por size.
El contenido del arreglo debe estar ordenado en orden ascendente según la función de comparación referenciada por compar. Se espera que la rutina compar tenga dos argumentos que apunten al objeto key y a un elemento del arreglo, en ese orden, y debe devolver un entero menor, igual o mayor que cero si resulta que el objeto key es menor, igual o mayor (respectivamente) que el elemento del arreglo.

VALOR DEVUELTO

La función bsearch() devuelve un puntero al elemento del arreglo que coincide, o NULL si no hay coincidencia. Si hay múltiples elementos que coinciden con la clave, el elemento devuelto está sin determinar.

ATRIBUTOS

Para obtener una explicación de los términos usados en esta sección, véase attributes(7).
Interfaz Atributo Valor
bsearch() Seguridad del hilo Multi-hilo seguro
 

ESTÁNDARES

POSIX.1-2001, POSIX.1-2008, C99, SVr4, 4.3BSD.

EJEMPLOS

The example below first sorts an array of structures using qsort(3), then retrieves desired elements using bsearch().
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define ARRAY_SIZE(arr) (sizeof((arr)) / sizeof((arr)[0]))
struct mi { int nr; const char *name; };
static struct mi months[] = { { 1, "jan" }, { 2, "feb" }, { 3, "mar" }, { 4, "apr" }, { 5, "may" }, { 6, "jun" }, { 7, "jul" }, { 8, "aug" }, { 9, "sep" }, {10, "oct" }, {11, "nov" }, {12, "dec" } };
static int compmi(const void *m1, const void *m2) { const struct mi *mi1 = m1; const struct mi *mi2 = m2;
return strcmp(mi1->name, mi2->name); }
int main(int argc, char *argv[]) { qsort(months, ARRAY_SIZE(months), sizeof(months[0]), compmi); for (size_t i = 1; i < argc; i++) { struct mi key; struct mi *res;
key.name = argv[i]; res = bsearch(&key, months, ARRAY_SIZE(months), sizeof(months[0]), compmi); if (res == NULL) printf("'%s': unknown month\n", argv[i]); else printf("%s: month #%d\n", res->name, res->nr); } exit(EXIT_SUCCESS); }

VÉASE TAMBIÉN

hsearch(3), lsearch(3), qsort(3), tsearch(3)

TRADUCCIÓN

La traducción al español de esta página del manual fue creada por Sebastian Desimone <[email protected]> y Juan Pablo Puerta <[email protected]>
Esta traducción es documentación libre; lea la GNU General Public License Version 3 o posterior con respecto a las condiciones de copyright. No existe NINGUNA RESPONSABILIDAD.
Si encuentra algún error en la traducción de esta página del manual, envíe un correo electrónico a [email protected]

Recommended readings

Pages related to bsearch you should read also: