使用Arrays.sort()后,如何将数组反转到其初始位置?

时间:2018-11-27 22:14:23

标签: java

我必须对数组进行排序才能找到其中位数,但是现在我需要恢复数组的初始值,并保持原样。有可能吗?

3 个答案:

答案 0 :(得分:6)

您不能那样做。排序是不可逆的。但是,您也可以将原始列表的所有元素添加到新的ArrayList中,然后对该列表进行排序。

List<String> original = ...;
List<String> copy = new ArrayList<>(original);
Collections.sort(copy);

我不会担心副本的占用空间。这是一个浅表副本,这意味着不会复制元素本身,而是仅使用引用原始列表中包含的元素的方式创建一个新列表。而且该操作相当快。我只会担心列表很大。

答案 1 :(得分:3)

使用@McEmperors回答但带有数组

Object[] saved = Arrays.copyOf(old, old.length);
Array.sort(old);

答案 2 :(得分:1)

有几种方法可以实现您想要的:

  1. copy the array before sorting

    int[] unsorted = {2,3,1};
    int[] sorted = unsorted.clone();
    Arrays.sort(sorted);
    //find mean in sorted then proceed with unsorted
    
  2. create a custom sort function that retains a mapping between the positions.

  3. find the mean without sorting