我不确定这里发生了什么,我有两个数组变量,其中一个元素的元素未排序,而另一个是副本,以便维护未排序和排序的数组只使用一个而丢失另一个中的信息。
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
进行排序,而不是在未排序的数组中,所以我不知道它为什么会被返回,就像它被排序一样我是要打印的。
答案 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;
你实际上并没有创建数组的副本,你只是将两个变量设置为指向同一个数组 - 然后再排序。