public class DiagonalSort {
static int sortDiagonal(int m[][]) {
int[] intArray = new int[4];
int k=0;
//to insert 2d array diagonal elements into 1d array
for(int i = 0; i<m.length; i++){
for(int j= 0; j<m[i].length; j++) {
if(i == j) {
int n = m[i][j];
intArray[k]=n;
k++;
}
}
}
// sorting 1d array elements
Arrays.sort(intArray);
// inserting sorted elements to its appropriate positions
for(int i = 0; i<m.length; i++){
for(int j= 0; j<m[i].length; j++) {
if(i == j) {
m[i][j]= intArray[i];
}
}
}
//printing the diagonal elements
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[i].length; j++)
System.out.print(m[i][j] + " ");
System.out.println();
}
return 0;
}
public static void main(String args[])
{
int m[][] = { { 36, 10, 24, 8 },
{ 12, 23, 0, 2 },
{ 9, 5, 10, 2 },
{ 6, 3, 1, 2 } };
sortDiagonal(m);
} }
Я использовал очень простую логику:
- сначала вставьте диагональные элементы в массив 1d
- сортировка массива 1d
- вставить элементы отсортированного 1d массива в диагональные позиции 2d массива
Всегда рады более эффективному ответу.