ひのはる/YAYAで配列をソートする関数
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
AYA、YAYAで配列をソートする関数です。~
単純にソートするだけでなく、デリミタで区切られた特定のフ...
ソートすることもできます。~
関数の使い方は次の通りです。
SortArray( Arrayname as String, Delimiter as String, Tar...
-Arraynameは、ソートしたい汎用配列の名前です。その配列そ...
-Delimiterは、配列要素の中身がデリミタで区切られている場...
-TargetItemNumberは、配列要素の中身のうち、注目するフィー...
たとえば、「単語,読み,説明…」のようなエントリが並ぶ配列を...
デリミタに「,」、フィールド番号に「1」を指定します。
SortArray
{
SortArrayCore( _argv[0], 0, ARRAYSIZE(EVAL(EVAL('_argv[...
}
SortArrayCore
{
_a = _argv[0] // ソートする配列の名前
_first = TOINT(_argv[1])
_last = TOINT(_argv[2])
_d = _argv[3]
_n = TOINT(_argv[4])
EVAL( "_x = EVAL(%('_a'))[(_first + _last)/2][ _n, _d ]...
_i = _first
_j = _last
while 1
{
while ( EVAL(" %(EVAL('_a'))[_i][ _n, _d ]" ) < _x )
{
_i++
}
while ( _x < EVAL(" %(EVAL('_a'))[_j][ _n, _d ]" ) )
{
_j--
}
if ( _i >= _j )
{
break
}
EVAL("_t = %(EVAL('_a'))[_i] ")
EVAL(" %(EVAL('_a'))[_i] = %(EVAL('_a'))[_j] ")
EVAL(" %(EVAL('_a'))[_j] = _t ")
_i++
_j--
}
if ( _first < _i-1 )
{
ANCHOR.SortArrayCore( _a, _first, _i-1, _d, _n )
}
if ( _j+1 < _last )
{
ANCHOR.SortArrayCore( _a, _j+1, _last , _d, _n )
}
}
終了行:
AYA、YAYAで配列をソートする関数です。~
単純にソートするだけでなく、デリミタで区切られた特定のフ...
ソートすることもできます。~
関数の使い方は次の通りです。
SortArray( Arrayname as String, Delimiter as String, Tar...
-Arraynameは、ソートしたい汎用配列の名前です。その配列そ...
-Delimiterは、配列要素の中身がデリミタで区切られている場...
-TargetItemNumberは、配列要素の中身のうち、注目するフィー...
たとえば、「単語,読み,説明…」のようなエントリが並ぶ配列を...
デリミタに「,」、フィールド番号に「1」を指定します。
SortArray
{
SortArrayCore( _argv[0], 0, ARRAYSIZE(EVAL(EVAL('_argv[...
}
SortArrayCore
{
_a = _argv[0] // ソートする配列の名前
_first = TOINT(_argv[1])
_last = TOINT(_argv[2])
_d = _argv[3]
_n = TOINT(_argv[4])
EVAL( "_x = EVAL(%('_a'))[(_first + _last)/2][ _n, _d ]...
_i = _first
_j = _last
while 1
{
while ( EVAL(" %(EVAL('_a'))[_i][ _n, _d ]" ) < _x )
{
_i++
}
while ( _x < EVAL(" %(EVAL('_a'))[_j][ _n, _d ]" ) )
{
_j--
}
if ( _i >= _j )
{
break
}
EVAL("_t = %(EVAL('_a'))[_i] ")
EVAL(" %(EVAL('_a'))[_i] = %(EVAL('_a'))[_j] ")
EVAL(" %(EVAL('_a'))[_j] = _t ")
_i++
_j--
}
if ( _first < _i-1 )
{
ANCHOR.SortArrayCore( _a, _first, _i-1, _d, _n )
}
if ( _j+1 < _last )
{
ANCHOR.SortArrayCore( _a, _j+1, _last , _d, _n )
}
}
ページ名: