C-Bibliotheksfunktion -bsearch()

C-Standardbibliothek - <stdlib.h>

bsearch ist eine Funktion in der C-Standardbibliothek, die verwendet wird, um eine binäre Suche in einem sortierten Array durchzuführen. Ihre Definition befindet sich in der Header-Datei stdlib.h.

C-Bibliotheksfunktionenvoid *bsearch(const void *key, const void *base, size_t nitems, size_t size, int (*compar)(const void *, const void *))PaarnitemsFührt eine binäre Suche in einem Array von Objekten durch,baseVerweist auf das zu durchsuchende Array,keyVerweist auf das zu suchende Element,sizeGibt die Größe jedes Elements im Array an.

Der Inhalt des Arrays sollte in aufsteigender Reihenfolge gemäßcompar,der entsprechenden Vergleichsfunktion, sortiert sein.

Deklaration

Das Folgende ist die Deklaration der Funktion bsearch().

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

Parameter

  • key: Zeiger auf das Zielelement, nach dem gesucht werden soll.
  • base: Zeiger auf die Anfangsposition des Arrays.
  • nmemb: Anzahl der Elemente im Array.
  • size: Die Größe jedes Elements (in Bytes).
  • compar: Zeiger auf die Vergleichsfunktion, die zum Vergleichen zweier Elemente verwendet wird.

Rückgabewert

  • Wenn ein passendes Element gefunden wird,bsearchgeben Sie einen Zeiger auf dieses Element zurück.
  • Wenn kein passendes Element gefunden wird,bsearchreturnNULL。

Vergleichsfunktion

Die Vergleichsfunktion muss der folgenden Signatur entsprechen:

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

Funktion gibt zurück:

  • Ein negativer Wert, wennakleiner alsb。
  • Null, wennaequalsb。
  • Ein positiver Wert, wennagrößer alsb。

Beispiel

Das folgende Beispiel demonstriert die Verwendung der Funktion bsearch().

Beispiel

#include <stdio.h> #include <stdlib.h> // Vergleichsfunktion, die für die bsearch-Suche verwendet wird 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; // Array-Länge berechnen size_t array_size = sizeof(values) / sizeof(values[0]); // bsearch verwenden, um den Wert 32 im Array zu finden item = (int*) bsearch(&key, values, array_size, sizeof(int), cmpfunc); // Suchergebnis prüfen und ausgeben if (item != NULL) { printf("Gefundenes Element = %d\n", *item); } else { printf("Element = %d konnte nicht gefunden werden\n", key); } return 0; }

Lassen Sie uns das obige Programm kompilieren und ausführen, was das folgende Ergebnis erzeugt:

Found item = 32

C-Standardbibliothek - <stdlib.h>

Weitere Erweiterungen