import java.util.ArrayList; import java.util.List; /** * Date: Apr 9, 2010 * Time: 8:33:54 AM */ public class FunctionalQuicksort { public static List quickSort(List a) { if (a.isEmpty()) { return new ArrayList(); } List left = new ArrayList(); List mid = new ArrayList(); List right = new ArrayList(); for (Integer i : a) { if (i < a.get(0)) { left.add(i); // Use element 0 as pivot } else if (i > a.get(0)) { right.add(i); } else { mid.add(i); } } List left_s = quickSort(left); List right_s = quickSort(right); left_s.addAll(mid); left_s.addAll(right_s); return left_s; } }