c Programming/stdlib.h/bsearch

From Wikibooks, open books for an open world
Jump to navigation Jump to search

In the C standard library, bsearch is a function used to search for an object in a sorted array using the binary search algorithm.[1]

bsearch is a generic function that can search in sorted arrays of any size, containing any kind of object, or pointer to object, and using any kind of comparison predicate. The genericity, however, comes at the expense of type-safety, since bsearch operates on void pointers; and is also expensive in the number of function calls (since each comparison requires a call to the comparison predicate), which have a large overhead.

Prototype[edit | edit source]

void *bsearch(const void *key, const void *base, size_t nmemb, size_t size,
              int (*compare)(const void *, const void *));
// notice nmemb before size, unlike fread and fwrite

Behaviour[edit | edit source]

The bsearch() function returns a pointer to a matching member of the array, or NULL if no match is found. If the array has multiple matching elements the return value will be a pointer to one of those elements. Which particular element is unspecified.[2]

References[edit | edit source]

  1. ISO/IEC 9899:1999 specification (PDF). p. 318, § 7.20.5.1.
  2. UNIX man pages:man 3 bsearch

External links[edit | edit source]