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

How can I sort a 2D array and keep track of the original indexes in Java

我有一个名为 distance[][]

的二维数组

第 0 列包含我的值:

示例:

{ 5
  7
  3
  9 }

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

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

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

之后我会做什么?

最简单的解决方案是创建一个 Pair class 来保存该项目及其对应的 index.Then,保留此 Pair [=20= 的列表]es int 两个不同的 lists 而不是对 java 中的 them.Since 之一进行排序,您可以使用引用而不创建复制对象,这应该是 easy.Now 排序列表将包含根据值排序的值及其对应的索引,未排序的列表将具有 Pair sin 您输入它们的顺序,即根据索引排序。

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

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

arr 是您的原始二维数组,其中第一列包含要排序的数字,第二列包含索引