Транспонирование матрицы в Java
Данная статья написана командой Vertex Academy. Это одна из статей из нашего "Самоучителя по Java."
Напишите программу Transpose.java, которая будет транспонировать заданную квадратную матрицу без использования дополнительного массива. Напоминаем, что такое транспонирование матрицы. Транспонированная матрица - это матрица, полученная из исходной матрицы путем замены строк на столбцы. Ниже приводим 2 примера транспонированной матрицы.
Решение:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
public class Transpose { public static void main(String[] args) { // часть 1 - создаем матрицу n на n int n = 3; int[][] a = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { a[i][j] = n*i + j; } } // часть 2 - выводит на экран начальную матрицу System.out.println("Начальная матрица"); System.out.println("------"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.printf("%4d", a[i][j]); } System.out.println(); } // часть 3 - транспонирование матрицы for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { int temp = a[i][j]; a[i][j] = a[j][i]; a[j][i] = temp; } } // часть 4 - выводит на экран транспонированную матрицу System.out.println(); System.out.println("Новая матрица"); System.out.println("------"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { System.out.printf("%3d", a[i][j]); } System.out.println(); } } } |
Часть 1 - создаем матрицу n на n и заполняем ее значениями с помошью цикла. При желании можно сделать так, чтобы число n задавалось пользователем с консоли. Не бойтесь цикла 🙂
1 2 3 4 5 |
for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { a[i][j] = n*i + j; } } |
Вы увидите, что выражение " a[i][j] = n*i + j " просто заполняет массив по порядку числами , начиная с 0. Часть 2 - выводит на экран двухмерную матрицу с помощью двух массивов. "%4d" значит "4 пробела". Так, "%3d" - это 3 пробела, "%6d" - 6 пробелов, и т.д.
Часть 3 - транспонирование матрицы. Это "переворачивание" матрицы:
А еще во время транспонирования номер столбца и номер строки "меняются местами". Например, было a[1] [9], стало a[9][1]. И так со всеми элементами (a[2] [2], конечно, остается a[2][2]). Этим и пользуются для того, чтобы транспонировать матрицу в этом примере:
1 2 3 4 5 6 7 |
for (int i = 0; i < n; i++) { for (int j = i+1; j < n; j++) { int temp = a[i][j]; a[i][j] = a[j][i]; a[j][i] = temp; } } |
a[i][j] и a[j][i] меняются местами с помощью переменной temp (temporary - временный).
Часть 4 - выводим транспонированную матрицу на экран. Повторяет часть 2.
Надеемся - наша статья была Вам полезна. Есть возможность записаться на наши курсы по Java. Детальную информацию смотрите у нас на сайте.