Java
 Computer >> コンピューター >  >> プログラミング >> Java

Javaで行列の最初と最後の列要素を入れ替える方法をわかりやすく解説

はじめに

この記事では、Javaを使って、行列(マトリックス)の各行について「最初の列」と「最後の列」の要素を入れ替える方法を解説します。

行列とは、要素を行と列の2次元構造で配置したデータ形式のことです。m行n列の行列は「m × n 行列」と呼ばれ、個々の要素は a[i][j] のように表記します。これは「要素aがi行目・j列目に存在する」ことを意味します。

処理内容の確認

たとえば、次のような4×4の行列を用意したとします。

定義された行列:
4 5 6 7
1 7 3 4
11 12 13 14
23 24 25 50

各行の最初と最後の要素を入れ替えると、結果は次のようになります。

要素を入れ替えた後の行列:
7 5 6 4
4 7 3 1
14 12 13 11
50 24 25 23

アルゴリズム

ステップ1 - 処理を開始する
ステップ2 - 整数型の2次元配列 input_matrix と、整数値 matrix_length を宣言する
ステップ3 - 行列の値を定義する
ステップ4 - forループで各行を走査し、一時変数(temp)を使って先頭列と最終列の要素を入れ替える
ステップ5 - 結果を表示する
ステップ6 - 処理を終了する

例1:mainメソッド内にすべての処理を記述する場合

まずは、行列の定義から結果の出力まで、すべての処理をmainメソッド内にまとめて記述するシンプルな例です。

public class MatrixSwap {
    static void swap(int input_matrix[][]) {
    }
    public static void main(String args[]) {
        int input_matrix[][] = {
            { 4, 5, 6, 7 },
            { 1, 7, 3, 4 },
            { 11, 12, 13, 14 },
            { 23, 24, 25, 50 }
        };
        System.out.println("The matrix is defined as: ");
        for (int i = 0; i < input_matrix.length; i++) {
            for (int j = 0; j < input_matrix[0].length; j++)
                System.out.print(input_matrix[i][j] + " ");
            System.out.println();
        }
        int matrix_length = input_matrix.length;
        for (int i = 0; i < input_matrix[0].length; i++) {
            int temp = input_matrix[i][0];
            input_matrix[i][0] = input_matrix[i][matrix_length - 1];
            input_matrix[i][matrix_length - 1] = temp;
        }
        System.out.println(" The matrix after swapping the elements: ");
        for (int i = 0; i < matrix_length; i++) {
            for (int j = 0; j < input_matrix[0].length; j++)
                System.out.print(input_matrix[i][j] + " ");
            System.out.println();
        }
    }
}

実行結果

The matrix is defined as:
4 5 6 7
1 7 3 4
11 12 13 14
23 24 25 50

The matrix after swapping the elements:
7 5 6 4
4 7 3 1
14 12 13 11
50 24 25 23

例2:オブジェクト指向スタイルでメソッドに分割する場合

次に、入れ替え処理をswap()メソッドとして独立させ、オブジェクト指向プログラミング(OOP)の考え方に沿って再利用しやすくした例です。mainメソッドからはswap()を呼び出すだけで同じ処理が実行できます。

public class MatrixSwap {
    static void swap(int input_matrix[][]) {
        int matrix_length = input_matrix.length;
        for (int i = 0; i < input_matrix[0].length; i++) {
            int temp = input_matrix[i][0];
            input_matrix[i][0] = input_matrix[i][matrix_length - 1];
            input_matrix[i][matrix_length - 1] = temp;
        }
        System.out.println(" The matrix after swapping the elements: ");
        for (int i = 0; i < matrix_length; i++) {
            for (int j = 0; j < input_matrix[0].length; j++)
                System.out.print(input_matrix[i][j] + " ");
            System.out.println();
        }
    }
    public static void main(String args[]) {
        int input_matrix[][] = {
            { 4, 5, 6, 7 },
            { 1, 7, 3, 4 },
            { 11, 12, 13, 14 },
            { 23, 24, 25, 50 }
        };
        System.out.println("The matrix is defined as: ");
        for (int i = 0; i < input_matrix.length; i++) {
            for (int j = 0; j < input_matrix[0].length; j++)
                System.out.print(input_matrix[i][j] + " ");
            System.out.println();
        }
        swap(input_matrix);
    }
}

実行結果

The matrix is defined as:
4 5 6 7
1 7 3 4
11 12 13 14
23 24 25 50

The matrix after swapping the elements:
7 5 6 4
4 7 3 1
14 12 13 11
50 24 25 23

コードのポイント

  • 一時変数tempの役割: 値を直接代入すると、先に上書きした側の元の値が失われてしまいます。そのため、tempに退避させてから入れ替えるのが基本手順です。
  • lengthの意味: input_matrix.length は行数、input_matrix[0].length は列数を表します。
  • 注意点: 本サンプルは行数と列数が同じ4×4の正方行列を前提としています。行数と列数が異なる長方形の行列を扱う場合は、ループ条件を input_matrix.length(行数)に合わせるなど、添字範囲に十分注意してください。
  • 計算量: 各行につき定数回の操作で済むため、時間計算量はO(n)、追加のメモリは一時変数1つだけのO(1)で非常に効率的です。
  1. Pythonでリストの最初と最後の要素を取得する3つの方法

    Pythonでリストを扱っていると、「先頭の要素」と「末尾の要素」だけを取り出したい場面に遭遇することがあります。リストの長さを意識しながらインデックスを操作する必要があるため、一見すると少し手間に感じるかもしれません。ここでは、誰でもすぐに使える代表的な3つのアプローチを、コード例と実行結果つきでわかりやすく解説します。いずれの方法もリストのインデックスを活用したものです。方法1:インデックスを直接指定するPythonのリストでは、最初の要素には必ずインデックス「0」が割り当てられ、さらに負のインデックス「-1」を使えば最後の要素を参照できます。この仕様をそのまま利用すれば、追加の処理なしで

  2. Pythonでリストの最初と最後の要素を交換する方法:4つのアプローチを徹底解説

    はじめにこの記事では、リストの最初の要素と最後の要素を入れ替えるという問題に対する解決策を、4つの異なるアプローチで解説します。問題の定義与えられたリストに対して、最後の要素を最初の要素と入れ替える処理を実装します。例えば、[t, u, t, o, r, i, a, l] というリストが与えられた場合、実行後は [l, u, t, o, r, i, a, t] のように、先頭と末尾の要素が入れ替わります。それでは、以下の4つのアプローチを順番に見ていきましょう。アプローチ1:一時変数を使う基本的な方法最も基本的な方法です。リストの長さを取得し、一時変数(temp)を使って最初の要素と最後の要素