2d数组按最低到最高的数字排序

时间:2013-05-23 16:19:45

标签: java arrays algorithm sorting

我想对这个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();
       }
    }

3 个答案:

答案 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

}