Advertisement
bogolyubskiyalexey

Sort matrix by columns&rows

Nov 3rd, 2017
178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.22 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. import java.util.Scanner;
  4.  
  5.  
  6. public class Main {
  7.    
  8.     void swapChars(char[] s, int i, int j) {
  9.         char tmp = s[i];
  10.         s[i] = s[j];
  11.         s[j] = tmp;
  12.     }
  13.    
  14.     abstract class ISwapper {
  15.         abstract void swap(char [][] matrix, int i, int j);
  16.     };
  17.    
  18.     class SwapperColumns extends ISwapper {
  19.         void swap(char [][] matrix, int i, int j) {
  20.             int rowsCount = matrix.length;
  21.             for (int k = 0; k < rowsCount; ++k) {
  22.                 swapChars(matrix[k], i, j);
  23.             }
  24.         }
  25.     };
  26.    
  27.     class SwapperRows extends ISwapper {
  28.         void swap(char [][] matrix, int i, int j) {
  29.             char[] tmp = matrix[i];
  30.             matrix[i] = matrix[j];
  31.             matrix[j] = tmp;
  32.         }
  33.     };
  34.    
  35.     void Sort(char [][] matrix, char [] keys, ISwapper swaper) {
  36.         int size = keys.length;
  37.         for (int i = 0; i < size; ++i) {
  38.             for (int j = i + 1; j < size; ++j) {
  39.                 if (keys[i] > keys[j]) {
  40.                     swapChars(keys, i, j);
  41.                     swaper.swap(matrix, i, j);
  42.                 }
  43.             }
  44.         }
  45.     }
  46.    
  47.     void show(char[][] matrix) {
  48.         System.out.println("Matrix:");
  49.         for (int i = 0, k = 0; i < matrix.length; ++i) {
  50.             for (int j = 0; j < matrix[0].length; ++j) {
  51.                 System.out.print(matrix[i][j] + " ");
  52.             }
  53.             System.out.println();
  54.         }
  55.     }
  56.    
  57.     void run() {
  58.         char[] keysRows = "dcba".toCharArray();
  59.         char[] keysColumns = "dcba".toCharArray();
  60.         char[][] matrix = new char[keysRows.length][keysColumns.length];
  61.         // init matrix
  62.         for (int i = 0, k = 0; i < matrix.length; ++i) {
  63.             for (int j = 0; j < matrix[0].length; ++j) {
  64.                 matrix[i][j] = (char)(97 + k++);
  65.             }
  66.         }
  67.         show(matrix);
  68.         // sort solumns
  69.         Sort(matrix, keysColumns, new SwapperColumns());
  70.         show(matrix);
  71.        
  72.         // sort rows
  73.         Sort(matrix, keysRows, new SwapperRows());
  74.         show(matrix);
  75.     }
  76.  
  77.     public static void main(String []args) {
  78.         (new Main()).run();
  79.     }
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement