public static list quicksort(List numbers){ if (numbers.size()< 2){ return numbers; } final Integer pivot = numbers.get(0); final List lower = new ArrayList<>(); final List 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)); } } final List sorted = quicksort(lower); sorted.add(pivot); sorted.addAll(quicksort(higher)); return sorted; }