返回未排序的数组和排序数组,其元素的顺序相同

时间:2015-03-14 23:57:00

标签: java arrays

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

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进行排序,而不是在未排序的数组中,所以我不知道它为什么会被返回,就像它被排序一样我是要打印的。

2 个答案:

答案 0 :(得分:1)

看起来你两次都打印未排序的数组。从第一张println开始,尝试:

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

答案 1 :(得分:0)

在使用未排序的数组进行排序之前创建一个未排序数组的副本:

sortedArray = new int[unsortedArray.length];
System.arraycopy( unsortedArray, 0, sortedArray, 0, unsortedArray.length );

当你写:

sortedArray = unsortedArray;

你实际上并没有创建数组的副本,你只是将两个变量设置为指向同一个数组 - 然后再排序。