Java列表/递归错误

Java列表/递归错误,java,recursion,quicksort,Java,Recursion,Quicksort,Java新手。我正在阅读一本书,其中一个例子是关于quicksort的,它的效果很好。我理解这个算法,但想在每次递归之前打印数组,以真正了解较低和较高数组的情况 我想我只需要声明一个单独的列表,并用较低、枢轴和较高的值填充它,但它似乎放弃了所有的功能。递归似乎保持不变,但实际上没有排序。因此,它溢出并退出 我几乎可以肯定,这里缺少一个基本的Java概念 除了写在评论里的台词外,其他的都是从书中摘取的。注释行之间的行是我自己的 package quicksort; import java.uti

Java新手。我正在阅读一本书,其中一个例子是关于quicksort的,它的效果很好。我理解这个算法,但想在每次递归之前打印数组,以真正了解较低和较高数组的情况

我想我只需要声明一个单独的列表,并用较低、枢轴和较高的值填充它,但它似乎放弃了所有的功能。递归似乎保持不变,但实际上没有排序。因此,它溢出并退出

我几乎可以肯定,这里缺少一个基本的Java概念

除了写在评论里的台词外,其他的都是从书中摘取的。注释行之间的行是我自己的

package quicksort;

import java.util.ArrayList;
import java.util.List;

public class App {

    public static List<Integer> quicksort(List<Integer> numbers){
        if (numbers.size() < 2){
            return numbers;
        }

        final Integer pivot = numbers.get(0);
        final List<Integer> lower = new ArrayList<>();
        final List<Integer> higher = new ArrayList<>();

        for (int i = 1; i < numbers.size(); i++){
            if (numbers.get(i) < pivot){
                lower.add(numbers.get(i));
            }
            else{
                    higher.add(numbers.get(i));
            }
        }

        // Makes things go all squirrrrrrrrely
        final List<Integer> notYetSorted = lower;
        notYetSorted.add(pivot);
        notYetSorted.addAll(higher);

        System.out.println("During: " + notYetSorted);
        // -------------

        final List<Integer> sorted = quicksort(lower);

        sorted.add(pivot);

        sorted.addAll(quicksort(higher));

        return sorted;
    }

    public static void main(String[] args) {
        List<Integer> intList = new ArrayList<>();

        intList.add(5);
        intList.add(8);
        intList.add(2);
        intList.add(9);
        intList.add(10);
        intList.add(3);
        intList.add(4);
        intList.add(7);
        intList.add(1);
        intList.add(6);

        System.out.println("Before: " + intList);
        System.out.println("After: " + quicksort(intList).toString());
    }  

}
包快速排序;
导入java.util.ArrayList;
导入java.util.List;
公共类应用程序{
公共静态列表快速排序(列表编号){
if(number.size()<2){
返回号码;
}
最终整数pivot=numbers.get(0);
最终列表下部=新的ArrayList();
最终列表更高=新的ArrayList();
对于(int i=1;i
您的问题出现在本模块的开头:

final List<Integer> notYetSorted = lower;
notYetSorted.add(pivot);
notYetSorted.addAll(higher);

System.out.println("During: " + notYetSorted);
// -------------

final List<Integer> sorted = quicksort(lower);

一切都应该很好。

请提及输出中的所有错误。这会在线程“main”java.lang.StackOverflowerr中出现一个-
异常。另外,请用文字说明步骤。您也可以执行
intList.addAll(Arrays.asList(5,8,2,9,10,3,4,7,1,6)),而不是将每个数字单独添加到列表中波拉特-今后我会记住这一点。谢谢范德尔-我想知道是否有类似的事情发生。非常感谢你的建议。
final List<Integer> notYetSorted = new ArrayList<>(lower);