- 締切済み
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) よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- khazad-lefty
- ベストアンサー率44% (296/668)
いくつか補足要求を。 1.なぜDataTableは禁止なのか (データベースがない環境でもDataTableを独自に定義して使用することはできます) 2.二次元配列でないといけない理由はありますか? Private Structure XX Dim Kamoku As String Dim SimeiAs String Dim Zissi As String Dim Ten As String End Structure Dim tbl As results() という感じで構造体の配列にする方が並び替えの時は楽なので 3.点数は、「~点」という文字列型で保持するのでしょうか? (文字列でソートすると「100点」は「90点」よりも小さくなります。)