--- title: Поворот матрицы на 180 градусов description: Рассмотрим алгоритм разворота матрицы на 180 градусов. В отличие от алгоритма транспонирования, здесь в результирующей матрице строки и колонки не меняются... sections: [Транспонирование,Сравнение алгоритмов] tags: [java,массивы,многомерные массивы,матрицы,строки,колонки,циклы,вложенные циклы] canonical_url: /ru/2021/12/16/matrix-rotation-180-degrees.html url_translated: /en/2021/12/17/matrix-rotation-180-degrees.html title_translated: Matrix rotation 180 degrees date: 2021.12.16 --- Рассмотрим алгоритм разворота матрицы на 180 градусов. В отличие от алгоритма *транспонирования*, здесь в результирующей матрице строки и колонки не меняются местами, но отображаются зеркально. ```java // строки и колонки меняются местами swapped[j][i] = matrix[i][j]; // строки и колонки отображаются зеркально rotated[i][j] = matrix[m-i-1][n-j-1]; ``` *Похожий алгоритм: [Поворот матрицы на 90 градусов]({{ '/ru/2021/12/12/matrix-rotation-90-degrees.html' | relative_url }}).* Напишем метод на Java для поворота матрицы {`m×n`} на 180 градусов. Для примера возьмём прямоугольную матрицу {`4×3`}. ```java /** * @param m количество строк исходной матрицы * @param n количество колонок исходной матрицы * @param matrix исходная матрица * @return повёрнутая матрица */ public static int[][] rotateMatrix(int m, int n, int[][] matrix) { // новая матрица int[][] rotated = new int[m][n]; // обходим строки исходной матрицы for (int i = 0; i < m; i++) // обходим колонки исходной матрицы for (int j = 0; j < n; j++) // строки и колонки отображаются зеркально rotated[i][j] = matrix[m-i-1][n-j-1]; return rotated; } ``` {% raw %} ```java // запускаем программу и выводим результат public static void main(String[] args) { // исходные данные int m = 4, n = 3; int[][] matrix = {{11, 12, 13}, {14, 15, 16}, {17, 18, 19}, {20, 21, 22}}; // поворачиваем матрицу и выводим результат outputMatrix("Исходная матрица:", matrix); outputMatrix("Поворот на 180°:", rotateMatrix(m, n, matrix)); } ``` {% endraw %} ```java // вспомогательный метод, выводит матрицу в консоль построчно public static void outputMatrix(String title, int[][] matrix) { System.out.println(title); for (int[] row : matrix) { for (int el : row) System.out.print(" " + el); System.out.println(); } } ``` Вывод: ``` Исходная матрица: 11 12 13 14 15 16 17 18 19 20 21 22 Поворот на 180°: 22 21 20 19 18 17 16 15 14 13 12 11 ```