我有一个数组[x] [y]
4 2 0 3 1
t o b e o
r n o t t
o b e x x
我如何只对for行进行排序,但是使用行移动列。 结果必须是
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);
}
但它会对所有行进行排序。
答案 0 :(得分:2)
以下是您的问题的解决方案。这个算法可以完全按照你上面提到的那样做。
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;
}
}
}
}
打印出阵列以进行测试。
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();
}
排序前这是上述例子。
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
我希望这个解决方案符合您的要求。