【发布时间】:2017-08-15 16:45:59
【问题描述】:
我想在 java 中对二维数组进行排序。 例如 假设我有这个矩阵
1 5 4
3 7 8
2 9 6
排序后的结果应该是这样的
1 2 3
4 5 6
7 8 9
请帮帮我。
我已经为这个问题编写了以下代码
class Sort2dArrayFull{
public static void sort(int el[][]){
int m=0;
int n=0;
int temp=0;
int k1=1;
for(int i=0; i<el.length; i++){
for(int j=0; j<el[i].length; j++){
System.out.print(el[i][j]+" ");
}
System.out.print("\n");
}
System.out.print("\n");
for(int i=0; i<el.length; i++){
for(int j=0; j<el[i].length; j++){
for(int k=j+1; k<el[m+n].length; k++){
if(el[i][j]>el[m+n][k1]){
temp=el[i][j];
el[i][j]=el[m+n][k1];
el[m+n][k1]=temp;
}
k1++;
if(k1==el[m+n].length){
k1=0;
}
if(k==el[m+n].length){
m++;
}
if(m==el.length){
m=0;
n++;
}
}
}
}
for(int i=0; i<el.length; i++){
for(int j=0; j<el[i].length; j++){
System.out.print(el[i][j]+" ");
}
System.out.print("\n");
}
}
public static void main(String... args){
sort(new int[][]{{1,5,7,2},{55,44,11,77,33},{15,19,16,14,12,13}});
}
}
这个程序的输出是
//排序前
1 5 7 2
55 44 11 77 33
15 19 16 14 12 13
//排序后
19 15 44 55
1 7 5 77 33
2 11 16 14 12 13
但我想要这样的结果
1 2 5 7
11 12 13 14 15
16 19 33 44 55 77
【问题讨论】:
-
请尝试一下然后问。
-
SO 不会为你做作业。
-
尝试使用
java.util.Arrays.sort并覆盖java.util.Comparator中的compare方法。 -
欢迎来到 Stack Overflow!寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建 minimal reproducible example。使用“编辑”链接改进您的问题 - 不要通过 cmets 添加更多信息。谢谢!
-
如果您将其视为一维数组(通过实际将其复制到一个这样的数组中,或通过使用一些坐标映射函数),这将容易得多。