Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- public class Main {
- //Главная функция - функция main
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- //Объявление двумерного массива(матрицы) размерностью 2n x 2n (чётное число строк и столбцов)
- System.out.println("Введите размерность вашей матрицы (чётное число): ");
- int size = Integer.parseInt(reader.readLine());
- int[][] matrix = new int[size][size];
- //Заполнение матрицы рандомными числами от 0 до 100
- for (int i = 0; i < size; i++) {
- for (int j = 0; j < size; j++) {
- matrix[i][j] = (int)(Math.random()*100);
- }
- }
- //Вывод матрицы до сортировки
- System.out.println("Ваша матрица до сортировки: ");
- printMatrix(matrix);
- //Сортировка матрицы и её вывод с описанием после каждой сортировки
- mainDiagonalSort(matrix);
- secondaryDiagonalSort(matrix);
- upperTriangleSort(matrix);
- leftTriangleSort(matrix);
- rightTriangleSort(matrix);
- bottomTriangleSort(matrix);
- reader.close();
- }
- //Функция вывод матрицы на экран
- public static void printMatrix(int[][] matrix) {
- for (int[] ints : matrix) {
- for (int j = 0; j < matrix.length; j++) {
- System.out.print(ints[j] + "\t");
- }
- System.out.println();
- }
- }
- //Функция пузырьковой сортировки массива по возрастанию
- public static void bubbleSort(int[] array) {
- int tempVar = 0;
- for (int i = 0; i < array.length; i++) {
- for (int j = 0; j < array.length - i - 1; j++) {
- if (array[j] > array[j + 1]) {
- tempVar = array[j];
- array[j] = array[j + 1];
- array[j + 1] = tempVar;
- }
- }
- }
- }
- //Функция, сортирующая главную диагональ и выводящая матрицу на экран после сортировки
- public static void mainDiagonalSort(int[][] matrix) {
- int size = matrix.length;
- int[] array = new int[size];
- //Сортировка главной диагонали
- for (int i = 0; i < size; i++) {
- array[i] = matrix[i][i];
- }
- bubbleSort(array);
- for (int i = 0; i < size; i++) {
- matrix[i][i] = array[i];
- }
- //Вывод матрицы после сортировки главной диагонали
- System.out.println("Ваша матрица после сортировки главной диагонали: ");
- printMatrix(matrix);
- }
- //Функция, сортирующая побочную диагональ и выводящая матрицу на экран после сортировки
- public static void secondaryDiagonalSort(int[][] matrix) {
- int size = matrix.length;
- int[] array = new int[size];
- //Сортировка побочной диагонали
- for (int i = 0; i < size; i++) {
- array[i] = matrix[i][size - 1 - i];
- }
- bubbleSort(array);
- for (int i = 0; i < size; i++) {
- matrix[i][size - 1 - i] = array[i];
- }
- //Вывод матрицы после сортировки побочной диагонали
- System.out.println("Ваша матрица после сортировки побочной диагонали: ");
- printMatrix(matrix);
- }
- //Функция, сортирующая верхний треугольник и выводящая матрицу на экран после сортировки
- public static void upperTriangleSort(int[][] matrix) {
- int n = matrix.length;
- int size = (n*n - 2*n)/4;
- int[] array = new int[size];
- //Сортировка верхнего треугольника
- int k = 0;
- for (int i = 0; i < n/2 - 1; i++) {
- for (int j = i + 1; j < n - 1 - i; j++) {
- array[k] = matrix[i][j];
- k++;
- }
- }
- bubbleSort(array);
- k = 0;
- for (int i = 0; i < n/2 - 1; i++) {
- for (int j = i + 1; j < n - 1 - i; j++) {
- matrix[i][j] = array[k];
- k++;
- }
- }
- //Вывод матрицы после сортировки верхнего треугольника
- System.out.println("Ваша матрица после сортировки верхнего треугольника: ");
- printMatrix(matrix);
- }
- //Функция, сортирующая левый треугольник и выводящая матрицу на экран после сортировки
- public static void leftTriangleSort(int[][] matrix) {
- int n = matrix.length;
- int size = (n*n - 2*n)/4;
- int[] array = new int[size];
- //Сортировка левого треугольника
- int k = 0;
- for (int i = 1; i < n - 1; i++) {
- if (i < n/2) {
- for (int j = 0; j < i; j++) {
- array[k] = matrix[i][j];
- k++;
- }
- }
- else {
- for (int j = 0; j < n - 1 - i; j++) {
- array[k] = matrix[i][j];
- k++;
- }
- }
- }
- bubbleSort(array);
- k = 0;
- for (int i = 1; i < n - 1; i++) {
- if (i < n/2) {
- for (int j = 0; j < i; j++) {
- matrix[i][j] = array[k];
- k++;
- }
- }
- else {
- for (int j = 0; j < n - 1 - i; j++) {
- matrix[i][j] = array[k];
- k++;
- }
- }
- }
- //Вывод матрицы после сортировки левого треугольника
- System.out.println("Ваша матрица после сортировки левого треугольника: ");
- printMatrix(matrix);
- }
- //Функция, сортирующая правый треугольник и выводящая матрицу на экран после сортировки
- public static void rightTriangleSort(int[][] matrix) {
- int n = matrix.length;
- int size = (n*n - 2*n)/4;
- int[] array = new int[size];
- //Сортировка правого треугольника
- int k = 0;
- for (int i = 1; i < n - 1; i++) {
- if (i < n/2) {
- for (int j = n - i; j < n; j++) {
- array[k] = matrix[i][j];
- k++;
- }
- }
- else {
- for (int j = i + 1; j < n; j++) {
- array[k] = matrix[i][j];
- k++;
- }
- }
- }
- bubbleSort(array);
- k = 0;
- for (int i = 1; i < n - 1; i++) {
- if (i < n/2) {
- for (int j = n - i; j < n; j++) {
- matrix[i][j] = array[k];
- k++;
- }
- }
- else {
- for (int j = i + 1; j < n; j++) {
- matrix[i][j] = array[k];
- k++;
- }
- }
- }
- //Вывод матрицы после сортировки правого треугольника
- System.out.println("Ваша матрица после сортировки правого треугольника: ");
- printMatrix(matrix);
- }
- //Функция, сортирующая нижний треугольник и выводящая матрицу на экран после сортировки
- public static void bottomTriangleSort(int[][] matrix) {
- int n = matrix.length;
- int size = (n*n - 2*n)/4;
- int[] array = new int[size];
- //Сортировка нижнего треугольника
- int k = 0;
- for (int i = n/2 + 1; i < n; i++) {
- for (int j = n - i; j < i; j++) {
- array[k] = matrix[i][j];
- k++;
- }
- }
- bubbleSort(array);
- k = 0;
- for (int i = n/2 + 1; i < n; i++) {
- for (int j = n - i; j < i; j++) {
- matrix[i][j] = array[k];
- k++;
- }
- }
- //Вывод матрицы после сортировки нижнего треугольника
- System.out.println("Ваша матрица после сортировки нижнего треугольника: ");
- printMatrix(matrix);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement