• 締切済み

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) よろしくお願い致します。

みんなの回答

回答No.1

いくつか補足要求を。 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点」よりも小さくなります。)

関連するQ&A