配列用のソート機能

Eyecatch MetaTrader 4 プログラム初級編

 前回、下記の記事で配列について紹介させて頂きました。今回はその配列を使う上での便利なソート機能関数の紹介です。ソートとは数値が高い順に並び替えたり、逆に低い順で並び替えたりする機能です。ArraySort関数を使います。

ArraySort関数

int ArraySort( double&array[], int count=WHOLE_ARRAY, int start=0, int sort_dir=MODE_ASCEND)

 引数の説明をしてきます。

double&array[]

 この引数には配列を入れます。double型の後に&とついているのは、この引数で渡した変数、配列の数値を関数の中で変更する機能があります。array[]のように引数の後に[]がついているのは、その引数には配列を入れるということを表しています。ただし、aaa[3]という配列がある場合、実際に引数に書くコードはaaaだけでいいです。

int count=WHOLE_ARRAY

 この引数は検索する配列の範囲を設定します。WHOLE_ARRAYと書いた場合は全ての範囲となります。普通にソートする場合はWHOLE_ARRAYと書いておけば大丈夫です。

int start=0

 ソートの開始位置の設定です。aaa[3]という配列がある場合、ここに1を入れれば、aaa[0]は対象とせずに、aaa[1]とaaa[2]だけでソートします。普通にソートする場合は0と書いておけば大丈夫です。

int sort_dir=MODE_ASCEND

 ソートを昇順(低い順)でするのか、降順(高い順)でするのかの設定です。MODE_ASCENDは昇順、MODE_DESCENDは降順になります。ソートの内容によってこのどちらかを書いて下さい。

 基本的に、ArraySort( 配列, WHOLE_ARRAY, 0, MODE_ASCEND か MODE_DESCEND )と覚えておけば大丈夫です。

 下記は実際の使用例になります。

int aaa[3] = {10,20,30};

ArraySort( aaa, WHOLE_ARRAY, 0, MODE_DESCEND);

 上記の処理でaaaの配列の中身は以下のようになります。

ソート前ソート後
aaa[0] = 10;
aaa[1] = 20;
aaa[2] = 30;
aaa[0] = 30;
aaa[1] = 20;
aaa[2] = 10;

 ソート機能は配列を使っていると便利な機能ですので、色々と使い道を考えてみて下さい。

注意

内容には注意を払っていますが、保障は出来ません。
実際に運用する場合は、自己責任でお願いします。 

タイトルとURLをコピーしました