private static ArrayList<Integer> quicksort(ArrayList<Integer> toSort){
		
		if(toSort.size() == 0 || toSort.size() == 1){
			return toSort;
		}
		
		int midpoint = toSort.size() / 2;
	
		int pivot = toSort.get(midpoint);
		
		ArrayList<Integer> S = new ArrayList<Integer>();
		ArrayList<Integer> P = new ArrayList<Integer>();
		ArrayList<Integer> G = new ArrayList<Integer>();
		
		for(int i = 0; i < toSort.size(); i++){
			
			if(toSort.get(i) < pivot){
				S.add(toSort.get(i));
			}
			else if(toSort.get(i) > pivot){
				G.add(toSort.get(i));
			}
			else{
				P.add(toSort.get(i));
			}
		}
		
		ArrayList<Integer> finalList = new ArrayList<Integer>();
		
		finalList.addAll(quicksort(S));
		finalList.addAll(P);
		finalList.addAll(quicksort(G));
		
		return finalList;
	}