如何在不破坏原始数组的情况下对数组进行排序?

9

I have original array of

public static void main (String[] arg) {
  int[] array = {1,5,6,8,4,2}

  for (int i = 0; i < array.length; i++) {
    System.out.print("List 1 = " + array[i] + ",");
  }
  swap(array);
  for (int i = 0; i < array.length; i++) {
    System.out.print("List 2 = "+array[i] + ",");
  }
}
private static int swap (int[] list){
   Arrays.sort(list);
}

输出结果为:
 List 1 = 1,5,6,8,4,2
 List 2 = 1,2,4,5,6,8

我希望得到的答案是

List 1 = 1,5,6,8,4,2
List 2 = 1,5,6,8,4,2

即使进行了排序,我要怎样才能实现呢?

1
但如果排序后显示的仍然是相同的,那么这就不算是真正的排序了... - DGomez
1个回答

20
int[] originalArray = {1,5,6,8,4,2};
int[] backup = Arrays.copyOf(originalArray,originalArray.length);
Arrays.sort(backup);
执行以上代码后,backup被排序,而originalArray保持不变。

如果是这样,我该如何将已排序的数组传递给另一个方法? - userpane
@userpane 你在开玩笑吗?你可以直接调用类似 yourMethod(backup); 这样的方法。 - Juvanis
不不不,我知道,但它在非主方法中,所以我无法将它传递给另一个非主方法。 - userpane
public int[] yourMethod() { //一些其他的代码 返回备份;} - Juvanis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接