我想对这个2D数组进行排序,以便输出如下内容:
1 2 3
4 5 6
7 8 9
并告诉我它重新排列了多少动作。谢谢你分享!
到目前为止,这是我的代码:
public static void main(String[] args) {
int firstArray [][] ={{3,8,5},{1,6,9},{2,4,7}};
System.out.println("This is array to sort:");
displayArray(firstArray);
}
public static void displayArray(int x[][]) {
for (int row=0;row<x.length;row++) {
for(int column = 0;column<x[row].length; column++) {
System.out.print(x[row][column]+"\t");
}
System.out.println();
}
}
答案 0 :(得分:3)
首先,从阵列中取出每个数字,然后进行简单的排序,以确定打印数字的顺序。您应该在Java中查找compare
方法,或者根据需要自行创建。
当你得到它时,添加一个整数来计算你做的每一个操作,并在每次进行操作时将其递增1。然后在完成后打印它。
答案 1 :(得分:2)
这不仅仅是排序。
首先用嵌套数组的所有元素构建一个平面1D数组,你可以毫不费力地解决这个问题。然后排序(例如使用Arrays.sort())并最终使用嵌套循环复制已排序的数据(可以修改displayarray中的代码以执行复制)。
另一种对这些混乱进行排序的方法将创建一个包装类,该类实现java.util.List,它通过索引映射到2D数组中。然后,您可以使用Collections.sort()直接对其进行排序。
至于计算要排序的动作数,这完全是排序方法的问题。如果您想知道,请检查排序代码以计算(从您自己或从其他人复制的预制代码,例如JRE源)。
答案 2 :(得分:0)
此代码将对列进行排序,我不知道这是否有助于您
class some{
public static void main(String[] args) {
int firstArray [][] ={{3,8,5},{1,6,9},{2,4,7}};
System.out.println("This is array to sort:");
displayArray(firstArray);
firstArray = Sort(firstArray);
System.out.println();
displayArray(firstArray);
}
public static void displayArray(int x[][]) {
for (int row=0;row<x.length;row++) {
for(int column = 0;column<x[row].length; column++) {
System.out.print(x[row][column]+"\t");
}
System.out.println();
}
}
public static int[][] Sort(int x[][]) {
int tmp = 0;
for (int row=0;row<x.length;row++) {
for(int column = 0;column<x[row].length; column++) {
for (int i =column+1;i<x[row].length ;i++ ) {
if(x[row][column]>x[row][i]){
tmp= x[row][column];
x[row][column] = x[row][i];
x[row][i] = tmp ;
}//end of if
}
}
System.out.println();
}
return x ;
}//end of method sort
}