Java 未排序的数组和已排序的数组返回的元素顺序相同

Java 未排序的数组和已排序的数组返回的元素顺序相同,java,arrays,Java,Arrays,我不确定这里发生了什么,我有两个数组变量,其中一个元素未排序,而另一个是副本,以便维护未排序和排序的数组,而不是只使用一个数组而丢失另一个数组中的信息 public static void main(String[] args){ int[] unsortedArray; int[] sortedArray; boolean continueProgram = true; Scanner inputScanner = new Scanner(System.in);

我不确定这里发生了什么,我有两个数组变量,其中一个元素未排序,而另一个是副本,以便维护未排序和排序的数组,而不是只使用一个数组而丢失另一个数组中的信息

public static void main(String[] args){
    int[] unsortedArray;
    int[] sortedArray;
    boolean continueProgram = true;
    Scanner inputScanner = new Scanner(System.in);
    String answer = new String();
    while (continueProgram == true) {
        unsortedArray = buildArray();
        sortedArray = unsortedArray;
        System.out.println(Arrays.toString(unsortedArray));
        quickSort(sortedArray, 0, sortedArray.length - 1);
        System.out.println(Arrays.toString(unsortedArray));
        returnPositions(sortedArray, unsortedArray);

这是我的代码,我使用了快速排序来对元素进行排序,但只在变量
sortedArray
上,而不是在未排序的数组中,因此我不知道为什么它会返回,就像在打印它时对它进行了排序一样

先创建未排序数组的副本,然后再使用它进行排序:

sortedArray = new int[unsortedArray.length];
System.arraycopy( unsortedArray, 0, sortedArray, 0, unsortedArray.length );
当你写作时:

sortedArray = unsortedArray;

实际上,您并不是在创建数组的副本,而是将两个变量都设置为指向同一个数组,然后进行排序。

看起来您两次都在打印未排序的数组。从第一次打印的位置开始,尝试:

System.out.println(Arrays.toString(unsortedArray));
quickSort(sortedArray, 0, sortedArray.length - 1);
System.out.println(Arrays.toString(sortedArray));
returnPositions(sortedArray, unsortedArray);

我不知道这会发生。谢谢你的帮助。为了调试的目的,我想看看在应用快速排序后它是否会被排序。请修复你问题中的代码@horsefeathers在你的代码中发现了一个真正的问题,如果你花更多的时间发布你的问题,他就不需要花时间在一个显然对你没有用处的答案上。