-3

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

3 に答える 3

2

それは単なるソートではありません。

最初に、ネストされた配列のすべての要素を含むフラットな 1D 配列を構築することで、それほど手間をかけずにこれを解決できます。次に、それを並べ替え (たとえば Arrays.sort() を使用) し、最後に並べ替えられたデータをネストされたループでコピーして戻します (displayarray にあるコードを変更して、コピーを実行できます)。

このような混乱をその場でソートする別の方法は、インデックスによって 2D 配列にマップする java.util.List を実装するラッパー クラスを作成することです。その後、 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 に答える