private List<String[]> getValueList(int[] arrayToSort, String problemSize, String status, List<String[]> values) throws NotSortedException
	{
		
		// do all sorts
		int length = arrayToSort.length;
		int[] copy = arrayToSort.clone();

		Insertionsort myInsertion = new Insertionsort();
		myInsertion.sort(arrayToSort);
		
		if(!Helper.isSorted(arrayToSort))
			throw new NotSortedException();

		arrayToSort = copy.clone();

		Quicksort quicksort = new Quicksort();
		quicksort.sort(arrayToSort);
		
		if(!Helper.isSorted(arrayToSort))
		throw new NotSortedException();

		arrayToSort = copy.clone();

		QuicksortB myQuicksort = new QuicksortB();
		myQuicksort.sort(arrayToSort);
		
		if(!Helper.isSorted(arrayToSort))
		throw new NotSortedException();

		arrayToSort = copy.clone();

		QuicksortMedian3 myQuicksortMedian = new QuicksortMedian3();
		myQuicksortMedian.sort(arrayToSort);
		
		if(!Helper.isSorted(arrayToSort))
		throw new NotSortedException();
		/* quicksort with random comparision is so terribly bad 
		 * it will throw stackoverloferrors with numbers this large
		arrayToSort = copy.clone();

		QuicksortRandomX myQuicksortRandom = new QuicksortRandomX();
		myQuicksortRandom.sort(arrayToSort);
		
		if(!Helper.isSorted(arrayToSort))
			throw new NotSortedException();
		*/
		arrayToSort = copy.clone();
		Mergesort mergesort = new Mergesort();
		mergesort.sort(arrayToSort);
		
		if(!Helper.isSorted(arrayToSort))
		throw new NotSortedException();

		arrayToSort = copy.clone();
		MergesortB myMergesort = new MergesortB();
		myMergesort.sort(arrayToSort);
		
		if(!Helper.isSorted(arrayToSort))
		throw new NotSortedException();
		
		arrayToSort = copy.clone();
		Heapsort myHeapsort = new Heapsort();
		myHeapsort.sort(arrayToSort);
		
		if(!Helper.isSorted(arrayToSort))
		throw new NotSortedException();

		
		// add stepscount to table
		String myInsertionSteps = ""+myInsertion.getStepcount();
		String quicksortSteps = ""+quicksort.getStepcount();
		String myQuicksortSteps = ""+myQuicksort.getStepcount();
		String myQuicksortMedianSteps = ""+myQuicksortMedian.getStepcount();
		//String myQuicksortRandomSteps = ""+myQuicksortRandom.getStepcount();
		String mergesortSteps = ""+mergesort.getStepcount();
		String myMergesortSteps = ""+myMergesort.getStepcount();
		String myHeapsortSteps = ""+myHeapsort.getStepcount();
		
		values.add(new String[] { problemSize + " Elemente, " + status, 
				Helper.format(myInsertionSteps), 
				Helper.format(quicksortSteps),
				Helper.format(myQuicksortSteps), 
				Helper.format(myQuicksortMedianSteps), 
				//Helper.format(myQuicksortRandomSteps),
				Helper.format(mergesortSteps), 
				Helper.format(myMergesortSteps), 
				Helper.format(myHeapsortSteps) });
		
		
		// add recursiondepth to table
		String quicksortRecursion = Integer.toString(quicksort.getRekursionDepth());
		String myQuicksortRecursion = Integer.toString(myQuicksort.getRekursionDepth());
		String myQuicksortMedianRecursion = Integer.toString(myQuicksortMedian.getRekursionDepth());
		//String myQuicksortRandomRecursion = Integer.toString(myQuicksortRandom.getRekursionDepth());
		String mergesortRecursion = Integer.toString(mergesort.getRekursionDepth());
		String myMergesortRecursion = Integer.toString(myMergesort.getRekursionDepth());
		
		values.add(new String[] { "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&rarr;&nbsp;Rekursionstiefe", 
				"-", 
				Helper.format(quicksortRecursion), 
				Helper.format(myQuicksortRecursion),
				Helper.format(myQuicksortMedianRecursion),
				//Helper.format(myQuicksortRandomRecursion),
				Helper.format(mergesortRecursion), 
				Helper.format(myMergesortRecursion), 
				"-" });

		return values;

	}