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);
}
}
