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

自由度の高い配列(C#のジャグ配列)

・Java言語などでは配列の配列によって2次元以上の配列を表現している
 つまり、a[]={1,2}、b[]={3,4,5} とすると ab[][] = {{1,2},{3,4,5}} とできる
・よって、配列が「要素数×要素数」ではなくても良い
・これはC/C++の配列や、C#の通常の配列では表現できない
・しかし、C#のジャグ配列を用いると可能
・ジャグ配列の宣言と生成: 型[][] 配列名 = new 型[要素数][];
・ジャグ配列の初期化の書式: 型[][] 配列名 = { new 型[]{値,…}, … }
 例: int [][] aa = { new[] {1,2}, new[] {3,4,5} };
・ジャグ配列に対するforeach文は2次元では2重ループになる
  foreach (var wa in aa) { //ジャグ配列aaの全要素配列について繰返す
      foreach (var ww in wa) { //要素配列を入れた作業変数waの全要素について繰返す
          Console.WriteLine(ww);
      }
  }

ジャグ配列の線形探索:アルゴリズム

①ジャグ配列の全要素配列について下記を繰返す
 ・要素配列の全要素について下記を繰返す
    ・探索値と要素値が等しければ「ある」と表示して抜ける
②なかった場合は「ない」と表示する

参考:通常の配列の場合

int[,] val = { {10,20,30 },{40,50,60 } }; //元の2次元配列
Console.Write("検索値:");
var goal = int.Parse(Console.ReadLine());; //検索値
int i = 0, j = 0;
bool f = false; //完了フラグをオフにしておく
for(; i < 2; i++) {
    for(j = 0; j < 3; j++) {
        if(val[i, j] == goal) {
            Console.WriteLine("[{0}][{1}]にある", i, j); //先頭が1番目だとする
            f = true; //完了フラグオン
            break; //内側のループを抜ける
        }
    }
    if(f) { //完了フラグがオンなら
        break; //外側のループも抜ける
    }
}
if (!f) { //完了フラグがオフのままになっていたら
    Console.WriteLine("見つからない");
}

自由参加課題

最初に見つかった位置を「aa[1][2]にあります」というように表示しよう。

提出:ジャグ配列の線形探索:プログラム

コメントを残す

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