C#で2次元配列をソートする方法【ネストしたループとGetLength()の使い方】
C#で2次元配列を並べ替え(ソート)するには、ネストしたforループ(多重ループ)を使うのが基本的なアプローチです。外側のループで各行を処理しながら、内側のループで隣り合う要素同士を比較・交換していくことで、行ごとの並べ替えを実現できます。
要素を比較して入れ替える仕組み
まずは、隣接する2つの要素を比較し、順序が逆であれば入れ替える部分のコードを見てみましょう。これはバブルソート(隣接交換法)と呼ばれる手法の中核となる処理です。
for (int k = 0; k < j; k++) {
if (arr[i, k] > arr[i, k + 1]) {
int myTemp = arr[i, k];
arr[i, k] = arr[i, k + 1];
arr[i, k + 1] = myTemp;
}
}このコードでは、変数 myTemp を一時的な退避先として使い、arr[i, k] と arr[i, k + 1] の値を安全に交換しています。i は行のインデックス、k は列のインデックスに対応します。
GetLength()メソッドで配列全体を処理する
2次元配列のすべての行に対して上記の並べ替えを適用するには、GetLength() メソッドを使用します。GetLength(0) は行数(第1次元のサイズ)を、GetLength(1) は列数(第2次元のサイズ)を返します。
for (int i = 0; i < arr.GetLength(0); i++) {
for (int j = arr.GetLength(1) - 1; j > 0; j--) {
for (int k = 0; k < j; k++) {
if (arr[i, k] > arr[i, k + 1]) {
int myTemp = arr[i, k];
arr[i, k] = arr[i, k + 1];
arr[i, k + 1] = myTemp;
}
}
}
Console.WriteLine();
}コードのポイント解説
- 外側のループ(i):配列の各行を順番に取り出します。ループ回数は
arr.GetLength(0)、つまり行数分です。 - 中間のループ(j):各列の末尾からカウントダウンしていきます。これにより、すでに確定した末尾側の要素を再び比較対象から除外できます。
- 内側のループ(k):隣接する要素
arr[i, k]とarr[i, k + 1]を比較し、前の値が大きければ交換します。 - Console.WriteLine():1行分のソートが完了したタイミングで改行を出力し、結果を見やすく表示します。
このように、3重のループ構造を組み合わせることで、2次元配列の各行を個別に昇順ソートすることができます。なお、実務ではLINQや Array.Sort() などを活用する方法もありますが、多次元配列の場合はこのような手動のループ処理が基本となります。
-
Androidで配列の要素を並べ替える方法をわかりやすく解説
この記事では、Androidアプリで配列の要素を並べ替え(ソート)する方法を、実際に動くサンプルコードとともに解説します。数値が入った配列を昇順に並べ替え、その結果を画面に表示するまでの一連の手順を確認していきましょう。 手順1:新規プロジェクトを作成する まず、Android Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。 手順2:レイアウトファイルにコードを追加する 次に、res/layout/activity_main.xml に以下のコードを記述します。 <?x
-
AndroidのListViewで文字列配列をソートして表示する方法【初心者向け解説】
このチュートリアルでは、AndroidのListView(リストビュー)に文字列配列をソート(並べ替え)して表示する方法を、手順を追ってわかりやすく解説します。JavaのArrays.sort()メソッドを使えば、わずか数行のコードで配列を昇順に並べ替えることができます。 完成イメージ アプリを起動すると、ランダムな順序の数値文字列が格納された配列が、小さい順(昇順)に整列されてListViewに表示されます。 手順1:新しいプロジェクトを作成する まず、Android Studioを起動し、メニューから「File」→「New Project」を選択して新しいプロジェクトを作成します。必要な項