-3

我想对这个二维数组进行排序,以便输出如下内容:

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();
       }
    }
4

3 回答 3

3

首先,您从数组中取出每个数字,然后进行简单的排序以找出打印数字的顺序。如果需要,您应该查找compareJava 中的方法或制作自己的方法。

当你得到它时,添加一个整数来计算你所做的每一个操作,并在每次你做一个操作时将它增加 1。然后在完成后打印它。

于 2013-05-23T16:21:20.027 回答
2

那不是简单的排序。

您可以通过首先构建一个包含嵌套数组的所有元素的平面一维数组来轻松解决这个问题。然后对其进行排序(例如使用 Arrays.sort() ),最后使用嵌套循环复制回排序后的数据(可以修改 displayarray 中的代码以执行复制)。

对此类混乱进行适当排序的另一种方法是创建一个实现 java.util.List 的包装类,该类按索引映射到 2D 数组。然后,您可以使用 Collections.sort() 直接对其进行排序。

至于计算要排序多少步,那完全是排序方法的问题。如果您想知道,请使用排序代码对其进行计数(您自己的代码或从其他人复制的预制代码,例如 JRE 源代码)。

于 2013-05-23T16:29:31.053 回答
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

}

于 2013-05-23T17:10:42.747 回答