Русский

Справочник MQL4 Операции с массивами ArrayBsearch

ArrayBsearch

Ищет указанное значение в отсортированном по возрастанию многомерном числовом массиве. Поиск производится в первом измерении с учетом флага AS_SERIES.

Для поиска в массиве типа double

int  ArrayBsearch(
   const double&  array[],                // массив для поиска
   double         value,                  // значение для поиска
   int            count=WHOLE_ARRAY,      // количество элементов
   int            start=0,                // начальный индекс
   int            direction=MODE_ASCEND   // направление поиска
   );

Для поиска в массиве типа float

int  ArrayBsearch(
   const float&   array[],                // массив для поиска
   float          value,                  // значение для поиска
   int            count=WHOLE_ARRAY,      // количество элементов
   int            start=0,                // начальный индекс
   int            direction=MODE_ASCEND   // направление поиска
   );

Для поиска в массиве типа long

int  ArrayBsearch(
   const long&    array[],                // массив для поиска
   long           value,                  // значение для поиска
   int            count=WHOLE_ARRAY,      // количество элементов
   int            start=0,                // начальный индекс
   int            direction=MODE_ASCEND   // направление поиска
   );

Для поиска в массиве типа int

int  ArrayBsearch(
   const int&     array[],                // массив для поиска
   int            value,                  // значение для поиска
   int            count=WHOLE_ARRAY,      // количество элементов
   int            start=0,                // начальный индекс
   int            direction=MODE_ASCEND   // направление поиска
   );

Для поиска в массиве типа short

int  ArrayBsearch(
   const short&   array[],                // массив для поиска
   short          value,                  // значение для поиска
   int            count=WHOLE_ARRAY,      // количество элементов
   int            start=0,                // начальный индекс
   int            direction=MODE_ASCEND   // направление поиска
   );

Для поиска в массиве типа char

int  ArrayBsearch(
   const char&    array[],                // массив для поиска
   char           value,                  // значение для поиска
   int            count=WHOLE_ARRAY,      // количество элементов
   int            start=0,                // начальный индекс
   int            direction=MODE_ASCEND   // направление поиска
   );

Параметры

array[]

[in]  Числовой массив для поиска.

value

[in]  Значение для поиска.

count=WHOLE_ARRAY

[in]  Количество элементов для поиска. По умолчанию поиск производится во всем массиве.

start=0

[in]  Начальный индекс для поиска. По умолчанию поиск начинается с первого элемента.

direction=MODE_ASCEND

[in]  Направление поиска. Возможные значения:

MODE_ASCEND - поиск в направлении возрастания,
MODE_DESCEND - поиск в направлении убывания.

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

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

Примечание

Двоичный поиск обрабатывает только сортированные массивы. Для сортировки числового массива используется функция ArraySort().

Пример:

datetime daytimes[];
int      shift=10,dayshift;
// Все Time[] серии времени отсортировано в направлении убывания
ArrayCopySeries(daytimes,MODE_TIME,Symbol(),PERIOD_D1);
if(Time[shift]>=daytimes[0]) dayshift=0;
else
  {
   dayshift=ArrayBsearch(daytimes,Time[shift],WHOLE_ARRAY,0,MODE_DESCEND);
   if(Period()<PERIOD_D1) dayshift++;
  }
Print(TimeToStr(Time[shift])," corresponds to ",dayshift," day bar opened at ",
      TimeToStr(daytimes[dayshift]));