配列の応用をもっと学ぶ(Day6 応用編)
配列の基礎(添字・Length・多次元配列)を理解したら、 次は 「配列を使って何ができるのか」 をさらに深めていきます。
ここでは、実務でも頻繁に使われる応用テクニックを 初心者の方でも自然に理解できるように、例題を交えて丁寧に解説していきます。
配列応用の全体像
配列を応用すると、次のような処理が簡単に書けるようになります。
合計・最大値・最小値・平均値の計算を効率化できる 検索(特定の値を探す)処理が書ける 並び替え(ソート)ができる 複数の配列を組み合わせて処理できる 多次元配列で表形式のデータを扱える
Day6 後半では「合計・最大値・最小値・平均値」を扱いましたが、 ここではさらに一歩進んだ応用を紹介します。
配列の検索(値を探す)
特定の値が配列に存在するか調べる
例えば、点数の中に 90 があるかどうかを調べたい場合です。
int[] scores = { 80, 75, 90, 60, 88 };
bool found = false;
for (int i = 0; i < scores.Length; i++)
{
if (scores[i] == 90)
{
found = true;
break;
}
}
Console.WriteLine(found ? "90が見つかりました" : "90はありません");
C#ここで深掘りしたいポイントは、 見つかった瞬間に break でループを終了する というテクニックです。
無駄なループを回さないため、処理が効率的になります。
配列のソート(並び替え)
小さい順に並び替える(昇順)
C# には便利なメソッドがあります。
int[] scores = { 80, 75, 90, 60, 88 };
Array.Sort(scores);
foreach (int s in scores)
{
Console.WriteLine(s);
}
C#結果は次のようになります。
60
75
80
88
90
大きい順に並び替える(降順)
Array.Sort(scores);
Array.Reverse(scores);
C#ここで深掘りしたいポイントは、 Sort → Reverse の組み合わせで降順が作れる という点です。
配列のコピー(複製)
配列をそのまま別の配列にコピーする
int[] scores = { 80, 75, 90 };
int[] copy = new int[scores.Length];
Array.Copy(scores, copy, scores.Length);
C#copy は scores と同じ内容になります。
ここで重要なのは、 copy と scores は別の配列である という点です。
片方を変更しても、もう片方には影響しません。
配列の合体(結合)
2つの配列を1つにまとめる
int[] a = { 1, 2, 3 };
int[] b = { 4, 5, 6 };
int[] result = new int[a.Length + b.Length];
Array.Copy(a, result, a.Length);
Array.Copy(b, 0, result, a.Length, b.Length);
foreach (int n in result)
{
Console.WriteLine(n);
}
C#結果は次のようになります。
1 2 3 4 5 6
ここで深掘りしたいポイントは、 コピー先の添字をずらすことで配列を結合できる という点です。
多次元配列の応用(表の計算)
行ごとの合計を求める
int[,] table = {
{ 1, 2, 3 },
{ 4, 5, 6 }
};
for (int i = 0; i < 2; i++)
{
int total = 0;
for (int j = 0; j < 3; j++)
{
total += table[i, j];
}
Console.WriteLine("行 " + i + " の合計: " + total);
}
C#結果は次のようになります。
行0 の合計: 6
行1 の合計: 15
ここで深掘りしたいポイントは、 多次元配列は「行 × 列」の構造をループで表現する という点です。
配列応用のまとめ
Day6 応用編では、配列を使った高度な処理を学びました。
配列の検索 配列のソート 配列のコピー 配列の結合 多次元配列の応用
これらを理解すると、 現実のデータ処理をプログラムに落とし込む力が一気に高まります。
