Advertisement
MrGhost75

MATRIX_SORT_LAB_1

Apr 12th, 2020
237
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.35 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.IOException;
  3. import java.io.InputStreamReader;
  4.  
  5.  
  6. public class Main {
  7.  
  8.     //Главная функция - функция main
  9.     public static void main(String[] args) throws IOException {
  10.         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  11.  
  12.         //Объявление двумерного массива(матрицы) размерностью 2n x 2n (чётное число строк и столбцов)
  13.         System.out.println("Введите размерность вашей матрицы (чётное число): ");
  14.         int size = Integer.parseInt(reader.readLine());
  15.         int[][] matrix = new int[size][size];
  16.  
  17.         //Заполнение матрицы рандомными числами от 0 до 100
  18.         for (int i = 0; i < size; i++) {
  19.             for (int j = 0; j < size; j++) {
  20.                 matrix[i][j] = (int)(Math.random()*100);
  21.             }
  22.         }
  23.  
  24.         //Вывод матрицы до сортировки
  25.         System.out.println("Ваша матрица до сортировки: ");
  26.         printMatrix(matrix);
  27.  
  28.         //Сортировка матрицы и её вывод с описанием после каждой сортировки
  29.         mainDiagonalSort(matrix);
  30.         secondaryDiagonalSort(matrix);
  31.         upperTriangleSort(matrix);
  32.         leftTriangleSort(matrix);
  33.         rightTriangleSort(matrix);
  34.         bottomTriangleSort(matrix);
  35.  
  36.         reader.close();
  37.     }
  38.  
  39.     //Функция вывод матрицы на экран
  40.     public static void printMatrix(int[][] matrix) {
  41.         for (int[] ints : matrix) {
  42.             for (int j = 0; j < matrix.length; j++) {
  43.                 System.out.print(ints[j] + "\t");
  44.             }
  45.             System.out.println();
  46.         }
  47.     }
  48.  
  49.     //Функция пузырьковой сортировки массива по возрастанию
  50.     public static void bubbleSort(int[] array) {
  51.         int tempVar = 0;
  52.         for (int i = 0; i < array.length; i++) {
  53.             for (int j = 0; j < array.length - i - 1; j++) {
  54.                 if (array[j] > array[j + 1]) {
  55.                     tempVar = array[j];
  56.                     array[j] = array[j + 1];
  57.                     array[j + 1] = tempVar;
  58.                 }
  59.             }
  60.         }
  61.     }
  62.  
  63.     //Функция, сортирующая главную диагональ и выводящая матрицу на экран после сортировки
  64.     public static void mainDiagonalSort(int[][] matrix) {
  65.         int size = matrix.length;
  66.         int[] array = new int[size];
  67.  
  68.         //Сортировка главной диагонали
  69.         for (int i = 0; i < size; i++) {
  70.             array[i] = matrix[i][i];
  71.         }
  72.         bubbleSort(array);
  73.         for (int i = 0; i < size; i++) {
  74.             matrix[i][i] = array[i];
  75.         }
  76.  
  77.         //Вывод матрицы после сортировки главной диагонали
  78.         System.out.println("Ваша матрица после сортировки главной диагонали: ");
  79.         printMatrix(matrix);
  80.     }
  81.  
  82.     //Функция, сортирующая побочную диагональ и выводящая матрицу на экран после сортировки
  83.     public static void secondaryDiagonalSort(int[][] matrix) {
  84.         int size = matrix.length;
  85.         int[] array = new int[size];
  86.  
  87.         //Сортировка побочной диагонали
  88.         for (int i = 0; i < size; i++) {
  89.             array[i] = matrix[i][size - 1 - i];
  90.         }
  91.         bubbleSort(array);
  92.         for (int i = 0; i < size; i++) {
  93.             matrix[i][size - 1 - i] = array[i];
  94.         }
  95.  
  96.         //Вывод матрицы после сортировки побочной диагонали
  97.         System.out.println("Ваша матрица после сортировки побочной диагонали: ");
  98.         printMatrix(matrix);
  99.     }
  100.  
  101.     //Функция, сортирующая верхний треугольник и выводящая матрицу на экран после сортировки
  102.     public static void upperTriangleSort(int[][] matrix) {
  103.         int n = matrix.length;
  104.         int size = (n*n - 2*n)/4;
  105.         int[] array = new int[size];
  106.  
  107.         //Сортировка верхнего треугольника
  108.         int k = 0;
  109.         for (int i = 0; i < n/2 - 1; i++) {
  110.             for (int j = i + 1; j < n - 1 - i; j++) {
  111.                 array[k] = matrix[i][j];
  112.                 k++;
  113.             }
  114.         }
  115.         bubbleSort(array);
  116.         k = 0;
  117.         for (int i = 0; i < n/2 - 1; i++) {
  118.             for (int j = i + 1; j < n - 1 - i; j++) {
  119.                 matrix[i][j] = array[k];
  120.                 k++;
  121.             }
  122.         }
  123.  
  124.         //Вывод матрицы после сортировки верхнего треугольника
  125.         System.out.println("Ваша матрица после сортировки верхнего треугольника: ");
  126.         printMatrix(matrix);
  127.     }
  128.  
  129.     //Функция, сортирующая левый треугольник и выводящая матрицу на экран после сортировки
  130.     public static void leftTriangleSort(int[][] matrix) {
  131.         int n = matrix.length;
  132.         int size = (n*n - 2*n)/4;
  133.         int[] array = new int[size];
  134.  
  135.         //Сортировка левого треугольника
  136.         int k = 0;
  137.         for (int i = 1; i < n - 1; i++) {
  138.             if (i < n/2) {
  139.                 for (int j = 0; j < i; j++) {
  140.                     array[k] = matrix[i][j];
  141.                     k++;
  142.                 }
  143.             }
  144.             else {
  145.                 for (int j = 0; j < n - 1 - i; j++) {
  146.                     array[k] = matrix[i][j];
  147.                     k++;
  148.                 }
  149.             }
  150.         }
  151.         bubbleSort(array);
  152.         k = 0;
  153.         for (int i = 1; i < n - 1; i++) {
  154.             if (i < n/2) {
  155.                 for (int j = 0; j < i; j++) {
  156.                     matrix[i][j] = array[k];
  157.                     k++;
  158.                 }
  159.             }
  160.             else {
  161.                 for (int j = 0; j < n - 1 - i; j++) {
  162.                     matrix[i][j] = array[k];
  163.                     k++;
  164.                 }
  165.             }
  166.         }
  167.  
  168.         //Вывод матрицы после сортировки левого треугольника
  169.         System.out.println("Ваша матрица после сортировки левого треугольника: ");
  170.         printMatrix(matrix);
  171.     }
  172.  
  173.     //Функция, сортирующая правый треугольник и выводящая матрицу на экран после сортировки
  174.     public static void rightTriangleSort(int[][] matrix) {
  175.         int n = matrix.length;
  176.         int size = (n*n - 2*n)/4;
  177.         int[] array = new int[size];
  178.  
  179.         //Сортировка правого треугольника
  180.         int k = 0;
  181.         for (int i = 1; i < n - 1; i++) {
  182.             if (i < n/2) {
  183.                 for (int j = n - i; j < n; j++) {
  184.                     array[k] = matrix[i][j];
  185.                     k++;
  186.                 }
  187.             }
  188.             else {
  189.                 for (int j = i + 1; j < n; j++) {
  190.                     array[k] = matrix[i][j];
  191.                     k++;
  192.                 }
  193.             }
  194.         }
  195.         bubbleSort(array);
  196.         k = 0;
  197.         for (int i = 1; i < n - 1; i++) {
  198.             if (i < n/2) {
  199.                 for (int j = n - i; j < n; j++) {
  200.                     matrix[i][j] = array[k];
  201.                     k++;
  202.                 }
  203.             }
  204.             else {
  205.                 for (int j = i + 1; j < n; j++) {
  206.                     matrix[i][j] = array[k];
  207.                     k++;
  208.                 }
  209.             }
  210.         }
  211.  
  212.         //Вывод матрицы после сортировки правого треугольника
  213.         System.out.println("Ваша матрица после сортировки правого треугольника: ");
  214.         printMatrix(matrix);
  215.     }
  216.  
  217.     //Функция, сортирующая нижний треугольник и выводящая матрицу на экран после сортировки
  218.     public static void bottomTriangleSort(int[][] matrix) {
  219.         int n = matrix.length;
  220.         int size = (n*n - 2*n)/4;
  221.         int[] array = new int[size];
  222.  
  223.         //Сортировка нижнего треугольника
  224.         int k = 0;
  225.         for (int i = n/2 + 1; i < n; i++) {
  226.             for (int j = n - i; j < i; j++) {
  227.                 array[k] = matrix[i][j];
  228.                 k++;
  229.             }
  230.         }
  231.         bubbleSort(array);
  232.         k = 0;
  233.         for (int i = n/2 + 1; i < n; i++) {
  234.             for (int j = n - i; j < i; j++) {
  235.                 matrix[i][j] = array[k];
  236.                 k++;
  237.             }
  238.         }
  239.  
  240.         //Вывод матрицы после сортировки нижнего треугольника
  241.         System.out.println("Ваша матрица после сортировки нижнего треугольника: ");
  242.         printMatrix(matrix);
  243.     }
  244. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement