こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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)

よろしくお願い致します。

投稿日時 - 2010-01-17 18:49:34

QNo.5600504

困ってます

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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点」よりも小さくなります。)

投稿日時 - 2010-01-18 21:39:06