public static List sortQuick(List list) { List biglist = new ArrayList(); List largerThan = new ArrayList(); List smallerThan = new ArrayList(); if(list.size() == 0) { throw new NullPointerException("hmm something is perhaps wrong"); } Comparable pivot = (Comparable) list.get(0); int pivotPos = 0; biglist.add(0, pivot); if(list.size() >= 2) { for (int i = 1; i < list.size(); i++) { Comparable temp = (Comparable) list.get(i); if (temp.compareTo(pivot) <= 0) { smallerThan.add(temp); } else { largerThan.add(temp); } } } if(smallerThan.size() >= 2) { smallerThan = sortQuick(smallerThan); } if(smallerThan.size() != 0) { for (int i = smallerThan.size()-1; i >= 0; i--) { biglist.addFirst(smallerThan.get(i)); //System.out.println("added smaller list: " + biglist); pivotPos++; } } if(largerThan.size() >= 2) { largerThan = sortQuick(largerThan); } if(largerThan.size() != 0) { for (int i = 0; i < largerThan.size(); i++) { biglist.addLast(largerThan.get(i)); //System.out.println("added big list: " + biglist); } } if(biglist.size() == 1) { //System.out.println("size is 1: " + biglist); return biglist; } //System.out.println("end: " + biglist); return biglist; }