Welcome to collectivesolver - Programming & Software Q&A with code examples. A website with trusted programming answers. All programs are tested and work.

Contact: aviboots(AT)netvision.net.il

Buy a domain name - Register cheap domain names from $0.99 - Namecheap

Scalable Hosting That Grows With You

Secure & Reliable Web Hosting, Free Domain, Free SSL, 1-Click WordPress Install, Expert 24/7 Support

Semrush - keyword research tool

Boost your online presence with premium web hosting and servers

Disclosure: My content contains affiliate links.

39,907 questions

51,839 answers

573 users

How to sort the boundary elements of a matrix in Java

1 Answer

0 votes
import java.util.Arrays;

public class MyClass {
    private static int GetBoundariesLength(int matrix[][]) {
        int rows = matrix.length;
        int cols = matrix[0].length;
         
        return (rows * 2) + (cols * 2) - 4;
    }
    private static void SortMatrixBoundaries(int[][] matrix) {
        int rows = matrix.length;
        int cols = matrix[0].length;
        
        Integer[] array = new Integer[GetBoundariesLength(matrix)]; 
     
        int array_index = 0;
        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < cols; j++) {
                if (i == 0 || j == 0 || i == rows - 1 || j == cols - 1) {
                    array[array_index++] = matrix[i][j];
                }
            }
        }
        
        Arrays.parallelSort(array);
     
        array_index = 0;
     
        for (int j = 0; j < cols; j++) {
            matrix[0][j] = array[array_index++];
        }
          
        for (int j = 0; j < cols; j++) {
            if (j == cols - 1) {
                for (int i = 1; i < rows; i++) {
                    matrix[i][j] = array[array_index++];
                }
            }
        }
          
        for (int j = cols - 2; j > -1; j--) {
             matrix[rows - 1][j] = array[array_index++];
        }
          
        for (int i = rows - 2; i > 0; i--) {
             matrix[i][0] = array[array_index++];
        }
    }

    public static void main(String args[]) {
        int matrix[][] = { 
	        { 1,  2,  3,  4,  5},
            { 6,  7,  8,  9, 10},
            {11, 12, 13, 14, 15},
            {16, 17, 18, 19, 20} 
	    };
	    
	    SortMatrixBoundaries(matrix);

	    for (int[] x : matrix) {
            for (int n : x) {
                System.out.print(n + " ");
            }
            System.out.println();
        }
    }
}





/*
run:

1 2 3 4 5 
20 7 8 9 6 
19 12 13 14 10 
18 17 16 15 11 
      
*/

 



answered Jun 30, 2023 by avibootz
...