【问题标题】:2d Array sorting by lowest to highest number [closed]二维数组按从低到高排序[关闭]
【发布时间】:2013-05-23 16:19:44
【问题描述】:

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

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

【问题讨论】:

  • 这段代码只会打印数组。给我们一个您尝试过或遇到问题的代码。
  • 这可以在两个for-loops现在想想!
  • Tdorno 先生,请您帮帮我,这是我的家庭作业,老师只教我们基础知识。我读了很多书,想不通。拜托,我会很高兴的!

标签: java arrays algorithm sorting


【解决方案1】:

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

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

【讨论】:

  • 但我不知道如何对数字进行排序?
  • @user2414434:有几种排序方式。您应该首先查找排序算法,可能在这里发布代码和一个问题之前。我们不是来为您编写代码,而是回答具体问题。所以请阅读排序,然后再回来提问。
  • 我会更新我的解释。
  • +1 提供了一个很好的解决方案而不提供密码
【解决方案2】:

这不是简单的排序。

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

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

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

【讨论】:

    【解决方案3】:

    此代码将对列进行排序,我不知道这是否对您有帮助

    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
    

    }

    【讨论】:

    • 非常感谢。愿生活善待你。你真是个好人。帮我分配!