アルゴリズムⅠ・講義メモ3

ソート:ライブラリメソッドを用いて2次元配列をソート

・「Array.Sort(配列名);」は1次元配列専用なので、2次元配列を直接には扱えない
・例えば int[,] val = {{70,20,30},{40,50,60}}; をソートしたら、
 {{20,30,40},{50,60,70}} となるようにしたい。

ソート:ライブラリメソッドを用いて2次元配列をソート:アルゴリズム

① 作業用の1次元配列を2次元配列の全要素数(配列名.Length)で用意する
② 2次元配列の全要素を作業用の1次元配列にコピーする
③ 作業用の1次元配列をライブラリメソッドを用いてソート
④ 作業用の1次元配列の全要素を2次元配列に書き戻す

・フローチャートにしよう
 
 ※ XML:https://ha233.rundog.org/wp-content/uploads/2023/07/2dsort.zip

ソート:ライブラリメソッドを用いて2次元配列をソート:プログラム例

int[,] val = {{70,20,30},{40,50,60}}; //元の2次元配列
int[] w = new int[val.Length]; //作業用の1次元配列を2次元配列の全要素数で用意する
for(int i = 0; i < 2; i++) {
    for(int j = 0; j < 3; j++) {
        w[i * 3 + j] = val[i, j]; //2次元配列の全要素を作業用の1次元配列にコピー
    }
}
Array.Sort(w); //作業用の1次元配列を昇順にソート
for(int i = 0; i < 2; i++) {
    for(int j = 0; j < 3; j++) {
        val[i, j] = w[i * 3 + j]; //作業用の1次元配列の全要素を2次元配列に書き戻す
    }
}
foreach (int i in val) { //2次元配列の全要素について繰返す
    Console.WriteLine(i);
}

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です