一尘不染

如何在Java中找到排序的排列

algorithm

我想对数组进行排序,并按排序顺序找到每个元素的索引。因此,例如,如果我在数组上运行此命令:

[3,2,4]

我会得到:

[1,0,2]

有没有一种简单的方法可以在Java中做到这一点?


阅读 231

收藏
2020-07-28

共1个答案

一尘不染

假设您的元素存储在数组中。

final int[] arr = // elements you want
List<Integer> indices = new ArrayList<Integer>(arr.length);
for (int i = 0; i < arr.length; i++) {
  indices.add(i);
}
Comparator<Integer> comparator = new Comparator<Integer>() {
  public int compare(Integer i, Integer j) {
    return Integer.compare(arr[i], arr[j]);
  }
}
Collections.sort(indices, comparator);

现在indices按其排序顺序包含数组的索引。您可以通过int[]足够简单的for循环将其转换回。

2020-07-28