Транспонировать матрицу 5x2 в 2x5

Изучаю матрицы, транспортировать 2х2 разобралась, а вот 5x2 в 2x5 не могу. Как транспортировать матрицу 5x2 в 2x5 ?

0 1    --->  0 2 4 6 8  
2 3          1 3 5 7 9
4 5
6 7
8 9
public class transpose1 {
    public static void main(String[] args) {

        int[][] array = {
                {2,3},
                {4,5},
        };
        System.out.println("Оригинальная матрица");
        System.out.println("------");
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.print(array[i][j] + " ");
            }
            System.out.println();
        }
        for (int i = 0; i < 2; i++) {
            for (int j = i+1; j < 2; j++) {
                int temp = array[i][j];
                array[i][j] = array[j][i];
                array[j][i] = temp;
            }
        }
        System.out.println("Новая матрица");
        System.out.println("------");
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 2; j++) {
                System.out.print(array[i][j] + " ");
            }
            System.out.println();
        }
    }
}

Ответы (3 шт):

Автор решения: Zhenyria

Решение этой задачи заключается в инвертированном присваивании значений в двойном цикле:

for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix[i].length; j++) {
        newMatrix[j][i] = matrix[i][j];
    }
}

Значения новой матрицы заполняются значениями из старой матрицы. Содержимое ячейки [i][j] записывается в ячейку [j][i]. Вот и вся суть.

→ Ссылка
Автор решения: Ника

что-то вроде этого?

class transpose11 {
    public static void main(String[] args) {
        int[][] result = new int[2][5];
        int[][] array = {
                {0,1},
                {2,3},
                {4,5},
                {6,7},
                {8,9},
        };
        System.out.println("Оригинальная матрица");
        System.out.println("------");
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + " ");
            }
            System.out.println();
        }
        for (int i = 0; i < result.length; i++) {
            for (int j = 0; j < result[i].length; j++) {
                result[i][j] = array[j][i];
            }
        }
 System.out.println("Новая матрица");
        System.out.println("------");
        for (int i = 0; i < result.length; i++) {
            for (int j = 0; j < result[i].length; j++) {
                System.out.print(result[i][j] + " ");

            }
            System.out.println();
        }
    }
}
→ Ссылка
Автор решения: lampa

К слову алгоритмы для матриц уже придуманы и собраны в commons-math3

Например транспонирование:

double[][] matrix = {
        {0, 1},
        {2, 3},
        {4, 5},
        {6, 7},
        {8, 9}
};

System.out.println(MatrixUtils.createRealMatrix(matrix).transpose());

>>>> Array2DRowRealMatrix{{0.0,2.0,4.0,6.0,8.0},{1.0,3.0,5.0,7.0,9.0}}
→ Ссылка