CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по библиотечным функциям языка Си
bsearch - двоичный поиск в массиве
Описание
Выполняет двоичный поиск в упорядоченном массиве из num элементов по указателю base элемента, равного key. Каждый элемент массива имеет размер width бай- тов. Алгоритм поиска реализует функция *cmp, опреде- ленная пользователем. Она должна использовать два аргумента, являющихся указателями на элементы, и во- звращать одно из значений: <0 - elem1 меньше elem2 0 - elem1 совпадает с elem2 >0 - elem1 больше elem2
Использование
#include <stdlib.h> void *bsearch(const void *key, const void *base, size_t num, size_t width, int(*cmp)(const void *elem1,const void *elem2)); /* ANSI */
Возвращаемое значение
Возвращается указатель на соответствующий элемент массива base или NULL, если таковой не найден.
Пример
#include <stdio.h> #include <stdlib.h> #include <string.h> #define SIZE(arr)(sizeof(arr)/sizeof(arr[0])) int array[]={1254,3427,1111,3901,6677,0101}; int intcmp(int *p1, int *p2) { return(*p1 - *p2); } main() { int * pointer; int Key = 3901; pointer = (int *) bsearch(& Key, array, SIZE(array), sizeof(int), intcmp); if(pointer) { printf("[ %d] имеется в массиве\n", Key); } else { printf("[ %d] отсутствует в массиве\n", Key); } }