Freigeben über


bsearch

Führt eine binäre Suche in einem sortierten eindimensionalen Arrays aus.Eine sicherere Version dieser Funktion ist verfügbar. Weitere Informationen finden Sie unter bsearch_s.

void *bsearch( 
   const void *key,
   const void *base,
   size_t num,
   size_t width,
   int ( __cdecl *compare ) (const void *key, const void *datum) 
);

Parameter

  • key
    Das Objekt, nach dem gesucht werden soll.

  • base
    Zeiger auf die Basis für Suche von Daten.

  • num
    Anzahl von Elementen.

  • width
    Breite von Elementen.

  • compare
    Rückruffunktion, die zwei Elemente verglichen.Das erste ist ein Zeiger auf die Schlüssel für die Suche und das zweite Element ist ein Zeiger auf den mit dem Schlüssel zu vergleichende Arrayelement.

Rückgabewert

bsearch gibt einen Zeiger auf ein Vorkommen von key im Array zurück, das durch basedargestellt wird.Wenn key nicht gefunden wird, gibt die Funktion NULLzurück.Wenn das Array nicht in aufsteigender Sortierreihenfolge oder doppelte Datensätze mit identischem Schlüssel enthält, lautet das Ergebnis unvorhersehbar.

Hinweise

Die bsearch-Funktion führt eine binäre Suche eines sortierten eindimensionalen Arrays num-Elemente, die jeweils von Bytes an width Größe aus.Der base-Wert ist ein Zeiger auf der Basis des zu durchsuchenden Array, und key ist der Wert, der nicht gefunden wird.Der compare-Parameter ist ein Zeiger auf eine benutzerdefinierte Routine, die den angeforderten Schlüssel auf ein Arrayelement verglichen und einen der folgenden Werte zurück, die deren Beziehung angeben:

Wert von compare Routine zurückgegeben wird.

Beschreibung

< 0

Schlüssel ist kleiner als Arrayelement.

0

Schlüssel entspricht Arrayelement.

> 0

Schlüssel ist größer als Arrayelement.

Diese Funktion überprüft seine Parameter.Wenn compare, key oder numNULList oder wenn baseNULL und ist *num ungleich 0 ist, oder wenn width (null) ist, wird der Ereignishandler aufgerufen, z. B. ungültige Parameter in Parametervalidierungbeschrieben.Wenn die Ausführung zulässig ist, um fortzufahren, wird errno zu EINVAL festgelegt, und die Funktion gibt NULLzurück.

Anforderungen

Routine

Erforderlicher Header

bsearch

<stdlib.h> und <search.h>

Um Kompatibilität zusätzlichen Informationen finden Sie unter Kompatibilität in der Einführung.

Beispiel

Dieses Programm sortiert ein Zeichenfolgenarray mit qsort und verwendet dann bsearch, um das Wort „Katze“ zu suchen.

// crt_bsearch.c
#include <search.h>
#include <string.h>
#include <stdio.h>

int compare( char **arg1, char **arg2 )
{
   /* Compare all of both strings: */
   return _strcmpi( *arg1, *arg2 );
}

int main( void )
{
   char *arr[] = {"dog", "pig", "horse", "cat", "human", "rat", "cow", "goat"};
   char **result;
   char *key = "cat";
   int i;

   /* Sort using Quicksort algorithm: */
   qsort( (void *)arr, sizeof(arr)/sizeof(arr[0]), sizeof( char * ), (int (*)(const 
   void*, const void*))compare );

   for( i = 0; i < sizeof(arr)/sizeof(arr[0]); ++i )    /* Output sorted list */
      printf( "%s ", arr[i] );

   /* Find the word "cat" using a binary search algorithm: */
   result = (char **)bsearch( (char *) &key, (char *)arr, sizeof(arr)/sizeof(arr[0]),
                              sizeof( char * ), (int (*)(const void*, const void*))compare );
   if( result )
      printf( "\n%s found at %Fp\n", *result, result );
   else
      printf( "\nCat not found!\n" );
}
  

.NET Framework-Entsprechung

System::Auflistungen::ArrayList::BinarySearch

Siehe auch

Referenz

Suchen und Sortieren

_lfind

_lsearch

qsort