【问题标题】:After using Arrays.sort() how do I reverse array to its initial position?使用 Arrays.sort() 如何将数组反转到其初始位置?
【发布时间】:2018-11-27 22:14:23
【问题描述】:

我必须对数组进行排序以找到它的中位数,但现在我需要恢复数组的初始值,原样放置。这可能吗?

【问题讨论】:

  • 排序前和排序后复制数组怎么样?
  • 这个。任何保存原始订单然后重新排序的策略都会使复制数组的时间相形见绌。
  • @MartynasKrupskis 请将其中一个答案标记为已接受。

标签: java


【解决方案1】:

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

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

我不会担心副本的足迹。这是一个浅拷贝,这意味着元素本身不会被复制,而只会创建一个新列表,其中引用了原始列表中包含的元素。而且这个操作非常快。如果列表非常非常大,我只会担心。

【讨论】:

    【解决方案2】:

    使用@McEmperors 回答但使用数组

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

    【讨论】:

      【解决方案3】:

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

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-11-07
        • 2017-01-22
        • 1970-01-01
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多