2017-02-11 9 views
0

こんにちは私が持っている問題、私は1つの2次元アレイ ラインと複数のライン7 INTとのアレイを有するソートの2D int配列JAVA

[Javaで】

..

int[][] new arr=new[7][100]; 

行番号がランク付けされています。

ランク配列が必要です。ソート

1 5 9 12 19 25 36 
1 5 11 12 19 25 36 
9 4 15 22 32 47 50 
22 23 25 29 36 55 99 

例えば

9 4 15 22 32 47 50 
1 5 9 12 19 25 36 
22 23 25 29 36 55 99 
1 5 11 12 19 25 36 

あなたにいくつかのアイデアを持っていてください!どのように問題のおかげで解決する

+1

各要素が1行(int [7] [100]ではなくint [100] [7])になるように、配列をまず入れ替えることができます。 http://introcs.cs.princeton.edu/java/14array/Transpose.java.html – SpiderPig

答えて

1

この問題を解決する簡単なアプローチは、2D配列を1D配列のリストに変換することです。

List<int[]> list = new ArrayList<int[]>(); 
// add logic to transform your 2D array here 

次に、カスタムコンパレータ機能でCollections.sort()を使用できます。

Collections.sort(list, new Comparator<int[]>() { 
    public int compare(int []a,int []b) { 
     for(int i=0;i<6;i++) 
      if(a[i]!=b[i]) return a[i]-b[i]; 
     return a[6] - b[6]; 
    } 
}); 
+0

私のプログラムでこのコードをどのように使うのか分かりません。私がint [] [] – user7495572

+0

私はあなたが練習するためにその部分を残しているときどのようにarraylistを使用してください:)。 – algojava

+0

ArrayListを使用する代わりに、配列として残してArrays.sortでソートすることもできます。最初にint [7] [100]をint [100] [7]に変換するだけです。 – SpiderPig

0

私はこのような何かを、または類似のものになります。https://stackoverflow.com/a/15452462/8024829

私は、スタックオーバーフローで同様のものを見ました。

double[][] array= { 
    {1, 5}, 
    {13, 1.55}, 
    {12, 100.6}, 
    {12.1, .85} }; 

    java.util.Arrays.sort(array, new java.util.Comparator<double[]>() { 
     public int compare(double[] a, double[] b) { 
      return Double.compare(a[0], b[0]); 
     } 
    });