如何对2D数组进行排序并跟踪Java中的原始索引

时间:2016-11-20 16:44:04

标签: java arrays sorting 2d

我有一个名为distance [] []

的2D数组

它在第0列中保留我的值:

示例:

{ 5
  7
  3
  9 }

它看起来像是一维数组,但我已将其转换为2D数组,以便能够跟踪我的索引。

我访问第一个值的方法是距离[0] [0]。

我的问题是:如果我要对数组进行排序,如何跟踪原始索引位置。我的印象是我可能需要按升序创建相应的数字列表,这些数字与距离值的位置相对应。

之后我会做什么?

2 个答案:

答案 0 :(得分:0)

最简单的解决方案是创建一个Pair类来保存项目及其相应的索引。然后,将这个Pair类的列表保存在两个不同的list s和排序其中一个。在java中,你可以使用引用而不创建一个复制对象,这应该相当容易。现在排序列表将包含值及其相应的索引根据值排序,未排序的列表将具有{ {1}}输入您输入的顺序,即根据索引排序。

答案 1 :(得分:0)

您只需要使用比较器。请考虑以下代码 -

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

arr是您的ordial 2d数组,其中第一列包含要排序的数字,第二列包含索引