2017-02-11 151 views
0

你好我有一個問題,排序2D int數組JAVA

[在Java]

我有一個2維陣列 及其與線和多線7 int數組..

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

排名數字。我需要rank數組。

例如

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

請你有一些想法?如何解決問題謝謝

+1

您可能需要第一轉您的陣列,使得每個元件是一條線(即,INT [100] [7]的不是int [7] [100])。這裏是一個例子http://introcs.cs.princeton.edu/java/14array/Transpose.java.html – SpiderPig

回答

1

解決此問題的簡單方法是將您的二維數組轉換爲一維數組列表。

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

然後,您可以使用Collections.sort()與自定義Comparator函數。

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

我不知道如何在我的程序中使用此代碼。如何使用arraylist當我有int [] [] – user7495572

+0

我離開那部分讓你練習:)。 – 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]); 
     } 
    });