Funciones de la biblioteca C -bsearch()

C 标准库 - <stdlib.h>Biblioteca estándar de C - <stdlib.h>

bsearch es una función de la biblioteca estándar de C, utilizada para realizar una búsqueda binaria en una matriz ordenada. Su definición se encuentra en el archivo de encabezado stdlib.h.

Funciones de la biblioteca Cvoid *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))SobrenitemsRealiza una búsqueda binaria en una matriz de objetos,baseapuntando a la matriz en la que se realiza la búsqueda,keyapuntando al elemento que se va a buscar,sizeespecifica el tamaño de cada elemento en la matriz.

El contenido de la matriz debecomparordenarse de forma ascendente según la función de comparación correspondiente.

Declaración

A continuación se muestra la declaración de la función bsearch().

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

Parámetros

  • key: puntero al elemento objetivo que se va a buscar.
  • base: puntero a la posición inicial del array.
  • nmemb: número de elementos en el array.
  • size: tamaño de cada elemento (en bytes).
  • compar: puntero a la función de comparación, que se utiliza para comparar dos elementos.

Valor de retorno

  • Si se encuentra un elemento coincidente,bsearchdevuelve un puntero a ese elemento.
  • Si no se encuentra un elemento coincidente,bsearchdevuelveNULL。

Función de comparación

La función de comparación debe cumplir con la siguiente firma:

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

La función devuelve:

  • un valor negativo, siaes menor queb。
  • cero, siaes igual ab。
  • un valor positivo, siaes mayor queb。

Ejemplo

El siguiente ejemplo demuestra el uso de la función bsearch().

Ejemplo

#include <stdio.h> #include <stdlib.h> // Función de comparación, utilizada para la búsqueda 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; // Calcular la longitud del array size_t array_size = sizeof(values) / sizeof(values[0]); // Usar bsearch para buscar el valor 32 en el array item = (int*) bsearch(&key, values, array_size, sizeof(int), cmpfunc); // Comprobar el resultado de la búsqueda y mostrarlo if (item != NULL) { printf("Found item = %d\n", *item); } else { printf("Item = %d could not be found\n", key); } return 0; }

Compilemos y ejecutemos el programa anterior, esto producirá el siguiente resultado:

Found item = 32

C 标准库 - <stdlib.h>Biblioteca estándar de C - <stdlib.h>

Otras extensiones