AA:対象の列(数値) BB:昇順or降順 CC:文字or数値(文字ソートor数値ソート)
A=「E,4,d B,1,5 A,1,h B,1,3 C,3,q」をCSV取得。 オプション=「1,昇順,数値 0,降順,文字 2,昇順,数値」。 //1列目を昇順で数値ソートした後 //0列目を降順で文字ソートした後 //2列目を昇順で数値ソートします。 A=Aをオプションで昇降優先表ソート。 Aを言う。 /* B,1,3 B,1,5 A,1,h C,3,q E,4,d */
●昇降優先表ソート(SSをVVで) 既並列とは配列=空。今値とは配列=空。前値とは配列=空。結果とは配列=空。補助とは配列=空。 VVで反復 結果=空。補助=空。初処理=いいえ。今値=空。前値=空。対象を「,」で区切る。AA=それ[0]。BB=それ[1]。CC=それ[2]。 //0=昇順。1=降順。ということにしようと思ったけどわかりやすいように「昇順」「降順」そのまま もし、BB=「昇順」ならば //昇順 もし、既並列=空ならば //初処理 もし、CC=「数値」ならば、SS=SSのAAを表数値ソート。既並列にAAを配列追加。続ける。 違えば、SS=SSのAAを表ソート。既並列にAAを配列追加。続ける。 違えば //二回目以降 SSで反復 NN=対象。今値=空。既並列で反復、今値にNN[対象]を配列追加。 //初処理 もし、初処理=いいえならば、補助にNNを配列追加。前値=今値。初処理=はい。続ける。 もし、前値≠今値ならば //前値と違う場合 もし、補助の配列要素数≠「1」ならば もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。 違えば、補助=補助のAAを表ソート。 補助で反復、対象を結果に配列追加。 補助=空。補助にNNを配列追加。前値=今値。 違えば //前値と同じ場合 補助にNNを配列追加。前値=今値。 もし、補助の配列要素数≠「1」ならば もし、CC=「数値」ならば、補助=補助のAAを表数値ソート。 違えば、補助=補助のAAを表ソート。 補助で反復、対象を結果に配列追加。 既並列にAAを配列追加。 違えば //降順 もし、既並列=空ならば //初処理 もし、CC=「数値」ならば、SS=SSのAAを表数値ソートして配列逆順。 違えば、SS=SSのAAを表ソートして配列逆順。 既並列にAAを配列追加。 続ける。 違えば //二回目以降 SSで反復 NN=対象。今値=空。既並列で反復、今値にNN[対象]を配列追加。 //初処理 もし、初処理=いいえならば、補助にNNを配列追加。前値=今値。初処理=はい。続ける。 もし、前値≠今値ならば //前値と違う場合 もし、補助の配列要素数≠「1」ならば もし、CC=「数値」ならば、補助=補助のAAを表数値ソートして配列逆順。 違えば、補助=補助のAAを表ソートして配列逆順。 補助で反復、対象を結果に配列追加。 補助=空。補助にNNを配列追加。前値=今値。 違えば //前値と同じ場合 補助にNNを配列追加。前値=今値。 もし、補助の配列要素数≠「1」ならば もし、CC=「数値」ならば、補助=補助のAAを表数値ソートして配列逆順。 違えば、 補助=補助のAAを表ソートして配列逆順。 補助で反復、対象を結果に配列追加。 既並列にAAを配列追加。 SS=結果。 SSで戻る。