C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Дебетовая карта Home Credit [CPS] RU

 bsearch / b / Библиотечн. функции Borland C++

bsearch

Функция            Двоичный поиск в массиве.

Синтаксис          #include <stdlib.h>
                   void * bsearch(const void * key, const void * base,
                          size_t  nelem, size_t width,
                          int (*fcmp) (const void *, const void *));

Файл, содержащий   stdlib.h
прототип

Описание           bsearch осуществляет поиск по таблице (массиву) из
                   элементов nelem и возвращает адрес первого элемента
                   в таблице,  который соответствует  шаблону  поиска.
                   Если соответствие не найдено, то bsearch возвращает
                   значение, равное 0.  Заметим, что поскольку функция
                   выполняет двоичный поиск, то первый соответствующий
                   элемент не обязательно  будет  первым  элементом  в
                   таблице.

                   Тип size_t определяется как unsigned int.

                   - nelem задает количество элементов таблицы.
                   
                   - width  задает  количество  байт в каждом элементе
                     таблицы.

                   Функция сравнения   fcmp   вызывается    с    двумя
                   аргументами:   elem1   и   elem2.  Каждый  аргумент
                   указывает   на   сравниваемый   элемент.    Функция
                   сравнения     сравнивает    элементы,    адресуемые
                   указателями (*elem1 и *elem2)  и  возвращает  целое
                   значение, зависящее от результатов сравнения.

                   Для bsearch *fcmp возвращает следующие значения:
                   
                     < 0   *elem1 <  *elem2
                     ==0   *elem1 == *elem2
                     > 0   *elem1 >  *elem2

Возвращаемое       bsearch возвращает адрес первого элемента таблицы,
значение           соответствующего ключу    поиска.    Если    такого
                   соответствия не найдено,  то возвращается значение,
                   равное 0.

Переносимость      Поддерживается в системах UNIX и определена в
                   ANSI C.

Смотрите также     lfind, lsearch, qsort.

Пример:

#include <stdlib.h>
#include <stdio.h>

#define NELEMS(arr)   (sizeof(arr) / sizeoff(arr[0]))
                   
int numarray[] = {123, 145, 512, 627, 800, 993};
int numeric(int *pl, int *p2)
{
   return(*p1 - *p2);
}
int lookup(int key)
{
   int *itemptr;
   /* явное преобразование
      необходимо для исключения ошибки несовпадения типов, воз-
      никающей во время компиляции */
   itemptr = bsearch(&key, numarray, NELEMS(numarray),
       sizeof(int), (int (*)(const void *,const void *))numeric);
   return (itemptr != NULL);
}
int main(void)
{
   if(lookup(512))
      printf("В таблице есть элемент 512\n");
   else
      printf("В таблице нет элемента 512\n");
   return 0;
}



Дебетовая карта Home Credit [CPS] RU