2017-02-11 108 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]); 
     } 
    });