Sort2DArray

二次元配列をソート(並び替え)

二次元配列を昇順または降順にソート(並び替え)します。

二次元配列のうち一次元の値をキーとしてソートする形式になります。
(詳細は以下のサンプルコードと配列値の表をご覧ください)

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 );

// 配列を降順にソートし、配列内要素を表示
Value3 = Sort2DArray( 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 );

// 配列を昇順にソートし、配列内要素を表示
Value3 = Sort2DArray( 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

定義

double SortArray( o_arTarget, dblSize1, dblSize2, dblHiLo )

灰色エリアをクリックすると全選択状態になります

引数

I/O 名前(推奨) 内容
O 配列(数値) arTarget 対象の配列
I double dblSize1 対象配列の第一次元の要素数
I double dblSize2 対象配列の第二次元の要素数
I double dblHiLo ソートの順序(1: 降順、-1: 昇順)

戻り値

内容
double 成功した時「1」(ソートされた配列が戻り値として返されるわけではなく、引数で指定した配列がそのまま変化します)

使用上の注意

・2次元の配列にのみ使用できます。
・配列要素は[1]からの対応になります。(要素[0]は無視されるので注意)

関連記事