AYA、YAYAで配列をソートする関数です。 関数の使い方は次の通りです。 SortArray( Arrayname as String, Delimiter as String, TargetItemNumber as Integer )
たとえば、「単語,読み,説明…」のようなエントリが並ぶ配列を、読みで並べ替えたいときに、 SortArray { SortArrayCore( _argv[0], 0, ARRAYSIZE(EVAL(EVAL('_argv[0]')))-1, _argv[1], _argv[2] ) } 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 ) } } |