![ArrayBsearch](https://celebpanda.com/wp/wp-content/uploads/2021/05/ArrayBsearch.jpg)
指定した値で1次元配列内を検索します。
ArrayBsearch
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 // 検索方向
);
- 引数
引数名 | 初期値 | I/O | 詳細 |
array[] | - | IN | 検索する数値配列 |
value | - | IN | 検索する値 |
count | WHOLE_ARRAY | IN | 検索対象の要素数。 省略した場合は配列全体で検索します。 |
start | 0 | IN | 検索対象のインデックス開始位置。 省略した場合は最初の要素が開始位置になります。 |
direction | MODE_ASCEND | IN | 検索方向。設定する値は次のいずれかになります。 ・MODE_ASCEND:順方向検索 ・MODE_DESCEND:逆方向検索 省略した場合は、順方向で検索します。 |
- 戻り値
見つかった要素のインデックスを返します。
見つからなかった場合は、値が最も近い要素のインデックスを返します。
- その他
ソートされた配列のみバイナリ検索処理します。
数値配列をソースするには、 ArraySort()関数を使用します。
- サンプル
#property strict
void OnInit(){
datetime daytimes[]; // 検索するデータ配列
int get_index; // 検索結果のインデックス
datetime checktime; // 検索する値
if ( Period() != PERIOD_D1 ) { // 現在のチャートが日足以外の場合は終了
return;
}
ArrayCopySeries( daytimes, MODE_TIME, Symbol(), PERIOD_D1); // daytimes配列に時系列配列情報をコピー
checktime = Time[14]; // 14営業日前の日足オープン時間を取得
// 時系列配列のTime[]は全て降順でソートされています
get_index = ArrayBsearch( daytimes, checktime, WHOLE_ARRAY, 0, MODE_DESCEND);
Print( "検索値:" ,TimeToStr(checktime),
" 見つかったインデックス:",get_index,
" 見つかったデータ:" ,TimeToStr(daytimes[get_index]) );
checktime = Time[14]; // 14営業日前の日足オープン時間を取得
checktime -= (36 * 3600); // 検索値を1.5日オフセット(15.5日前の時間)
get_index = ArrayBsearch( daytimes, checktime, WHOLE_ARRAY, 0, MODE_DESCEND);
Print( "検索値:" ,TimeToStr(checktime),
" 見つかったインデックス:",get_index,
" 見つかったデータ:" ,TimeToStr(daytimes[get_index]) );
}