二次元配列を昇順または降順にソート(並び替え)します。
二次元配列のうち一次元の値をキーとしてソートする形式になります。
(詳細は以下のサンプルコードと配列値の表をご覧ください)
ソートのアルゴリズムに「HeapSort(ヒープソート)」を用いているため、
配列の要素が多い場合は SortArray より高速に処理できることが多いです。
(ソート結果に違いはありません)
Array:
arValue[3,5](0);
Vars:
varResult(0),
varOutStr("");
arValue[1,1] = 2;
arValue[1,2] = 4;
arValue[1,3] = 1;
arValue[1,4] = 5;
arValue[1,5] = 3;
arValue[2,1] = 11;
arValue[2,2] = 22;
arValue[2,3] = 33;
arValue[2,4] = 44;
arValue[2,5] = 55;
arValue[3,1] = 36;
arValue[3,2] = 11;
arValue[3,3] = 97;
arValue[3,4] = 56;
arValue[3,5] = 48;
// 印刷ログをクリア
// (最終足における実行結果のみが残ります)
ClearPrintLog;
// 現在の配列内要素を表示
varOutStr = "";
For Value1 = 1 to 3 Begin
For Value2 = 1 to 5 Begin
varOutStr = varOutStr + NumToStr(arValue[Value1,Value2],0) + Tab;
End;
varOutStr = varOutStr + NewLine;
End;
Print( varOutStr );
// 配列を降順にソートし、配列内要素を表示
Condition1 = SortHeap2DArray( arValue, 3, 5, 1 );
varOutStr = "";
For Value1 = 1 to 3 Begin
For Value2 = 1 to 5 Begin
varOutStr = varOutStr + NumToStr(arValue[Value1,Value2],0) + Tab;
End;
varOutStr = varOutStr + NewLine;
End;
Print( varOutStr );
// 配列を昇順にソートし、配列内要素を表示
Condition2 = SortHeap2DArray( arValue, 3, 5, -1 );
varOutStr = "";
For Value1 = 1 to 3 Begin
For Value2 = 1 to 5 Begin
varOutStr = varOutStr + NumToStr(arValue[Value1,Value2],0) + Tab;
End;
varOutStr = varOutStr + NewLine;
End;
Print( varOutStr );
【配列内の様子】
arValue[3,5]
1 | 2 | 3 | 4 | 5 | |
---|---|---|---|---|---|
1 | 2 | 4 | 1 | 5 | 3 |
2 | 11 | 22 | 33 | 44 | 55 |
3 | 36 | 11 | 97 | 56 | 48 |
(赤背景の値をキーとしてソートされます)
【結果】
[1]
2 4 1 5 3
11 22 33 44 55
36 11 97 56 48
[2]
5 4 3 2 1
44 22 55 11 33
56 11 48 36 97
[3]
1 2 3 4 5
33 11 55 22 44
97 36 48 11 56
定義
bool SortHeap2DArray( o_arTarget, dblSize1, dblSize2, dblHiLo )
灰色エリアをクリックすると全選択状態になります
引数
I/O | 型 | 名前(推奨) | 内容 |
---|---|---|---|
O | 配列(数値) | arTarget | 対象の配列 |
I | double | dblSize1 | 対象配列の第一次元の要素数 |
I | double | dblSize2 | 対象配列の第二次元の要素数 |
I | double | dblHiLo | ソートの順序(1: 降順、-1: 昇順) |
戻り値
型 | 内容 |
---|---|
bool | 成功した時「true」(SortArrayと型が異なるので注意!ソートされた配列が戻り値として返されるわけではなく、引数で指定した配列がそのまま変化します) |
使用上の注意
・2次元の配列にのみ使用できます。
・配列要素は[1]からの対応になります。(要素[0]は無視されるので注意)