# bsearch

Функция `FSF.bsearch` осуществляет двоичный поиск в массиве.

    void* WINAPI bsearch(
      const void *Key,
      const void *Base,
      size_t NElem,
      size_t Width,
      int (WINAPI *fcmp)(const void *, const void *,void *),
      void *UserParam
    );

### Параметры

Key
Указатель на элемент, который хотим найти.
Base
Указатель на начало данных для сортировки. Массив данных должен быть отсортирован.
NElem
Количество сортируемых данных.
Width
Размер одного элемента сортируемых данных.
fcmp
Функция сравнения двух элементов. В процессе сортировки вызывается каждый раз, когда необходимо сравнить пару элементов данных. Функция сравнения `fcmp` должна иметь декларацию `WINAPI`.
`fcmp` получает три аргумента - `elem1`, `elem2` (которые являются указателями на данные) и `userparam` (то, что было передано в функцию в качестве параметра `UserParam`), и возвращает результат:

*elem1 < *elem2 | - fcmp возвращает целое меньше 0
*elem1 == *elem2 | - fcmp возвращает 0
*elem1 > *elem2 | - fcmp возвращает целое больше 0

UserParam
Указатель на пользовательские данные, которые функция `qsort` будет передавать в функцию сравнения `fcmp` в качестве третьего параметра.

### Возвращаемое значение

Функция возвращает адрес первого вхождения в таблице `Base`, которое соответствует ключу поиска `Key`. Если значение не найдено, то функция возвращает `0`.

### Замечания

Более подробно о функции см. справочное руководство по языку C/C++.

### Пример

Смотрите также:
FSF.qsort