我有一个数组[x][y]
4 2 0 3 1
t o b e o
r n o t t
o b e x x
如何仅对行进行排序,但随行移动列。 结果必须是
0 1 2 3 4
b o o e t
o t n t r
e x b x o
我尝试过
for (char[] innerArray : grid) {
Arrays.sort(innerArray);
}
但它对所有行进行排序。
最佳答案
这是您问题的解决方案。这个算法完全可以做到你上面提到的。
Integer[][] arr = new Integer[4][4];
arr[0][0] = 4;
arr[0][1] = 3;
arr[0][2] = 1;
arr[0][3] = 2;
arr[1][0] = 6;
arr[1][1] = 4;
arr[1][2] = 9;
arr[1][3] = 2;
arr[2][0] = 9;
arr[2][1] = 7;
arr[2][2] = 5;
arr[2][3] = 4;
arr[3][0] = 11;
arr[3][1] = 33;
arr[3][2] = 6;
arr[3][3] = 8;
for (int i = 0; i < arr[0].length; i++) {
for (int j = i+1; j < arr[0].length; j++) {
if (arr[0][i] > arr[0][j]) {
for (int k = 0; k < arr.length; k++) {
int temp = arr[k][i];
arr[k][i] = arr[k][j];
arr[k][j] = temp;
}
}
}
}
To print out the Array for testing purpose .
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[0].length; j++) {
if (arr[i][j] > 9) {
System.out.print(arr[i][j]+" ");
}else{
System.out.print(arr[i][j]+" ");
}
}
System.out.println();
}
This is an exemple of the above.
排序前
4 3 1 2
6 4 9 2
9 7 5 4
11 33 6 8
排序后
1 2 3 4
9 2 4 6
5 4 7 9
6 8 33 11
我希望这个解决方案能够满足您的要求。
关于java - 对行进行排序时,如何在多维数组中交换列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43173212/