2次元配列を複数項目でソートしたい
開発環境:Visual Web Developer 2008 express
言語:Visual Basic
制限事項:Detatableの使用は禁止
目標: 2次元配列を複数項目でソートしたい。
(1)「科目名」で昇順ソート(ソート処理(1))
(2)「氏名」で昇順ソート(ソート処理(2))
(3)「実施日」で昇順ソート(ソート処理(3))
※並べ替えた結果を利用して色々な処理を行いたいため、表示するコントロールなどに用意された機能は使わず、内部的に並べ替えるロジックを自分で書きたいと考えています。ソート処理(1)~(3)に書くロジックをお教えいただけると助かります。
Dim results(,) As String
Dim i As Integer = 0
ReDim Preserve results(3, 11)
'【武田茂・国語成績】
results(0, 0) = "国語"
results(1, 0) = "武田茂"
results(2, 0) = "1月10日実施"
results(3, 0) = "86点"
results(0, 1) = "国語"
results(1, 1) = "武田茂"
results(2, 1) = "2月10日実施"
results(3, 1) = "21点"
results(0, 2) = "国語"
results(1, 2) = "武田茂"
results(2, 2) = "3月10日実施"
results(3, 2) = "51点"
'【藤代慶介・国語成績】
results(0, 3) = "国語"
results(1, 3) = "藤代慶介"
results(2, 3) = "1月10日実施"
results(3, 3) = "86点"
results(0, 4) = "国語"
results(1, 4) = "藤代慶介"
results(2, 4) = "2月10日実施"
results(3, 4) = "21点"
results(0, 5) = "国語"
results(1, 5) = "藤代慶介"
results(2, 5) = "3月10日実施"
results(3, 5) = "51点"
'【武田茂・英語成績】
results(0, 6) = "英語"
results(1, 6) = "武田茂"
results(2, 6) = "1月10日実施"
results(3, 6) = "86点"
results(0, 7) = "英語"
results(1, 7) = "武田茂"
results(2, 7) = "2月10日実施"
results(3, 7) = "21点"
results(0, 8) = "英語"
results(1, 8) = "武田茂"
results(2, 8) = "3月10日実施"
results(3, 8) = "51点"
'【藤代慶介・英語成績】
results(0, 9) = "英語"
results(1, 9) = "藤代慶介"
results(2, 9) = "1月10日実施"
results(3, 9) = "86点"
results(0, 10) = "英語"
results(1, 10) = "藤代慶介"
results(2, 10) = "2月10日実施"
results(3, 10) = "21点"
results(0, 11) = "英語"
results(1, 11) = "藤代慶介"
results(2, 11) = "3月10日実施"
results(3, 11) = "51点"
'下記をキーとして、(1)から順に昇順ソートをかける
'(1)科目名
'ソート処理(1)
'(2)氏名
'ソート処理(2)
'(3)実施日
'ソート処理(3)
よろしくお願い致します。
補足
回答ありがとうございます。 nda23さんの回答を参考にチャレンジしましたができませんでした。 3行目のX.Add(L行目2列目の値, L)でエラーがあがり、「L行目2列目の値」には何を入れればよいのでしょうか? ちなみに私の二次元の宣言部が Dim YY(20, 10) As String としていますが、この場合でもnda23のロジックが使えるのでしょうか? 一連のロジックサンプルがあればお願いします。 プログラムを初めてまだ間もないので、こんな質問で申し訳ありません。