Транспонировать матрицу 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}}