private void merge(int l, int q, int r) {
		/**
		 * Das zu sortierende Array wird fortlaufend rekursiv in zwei Teile aufgeteilt. 
		 * Die Teilstücke werden über ein Hilfsarray (arr) sortiert und im Ausgangsarray 
		 * zusammengeführt.
		 */
		int[] arr = new int[intArr.length];
		int i, j;
		for (i = l; i <= q; i++) {
			writeCounter++;
			arr[i] = intArr[i];
		}
		for (j = q + 1; j <= r; j++) {
			writeCounter++;
			arr[r + q + 1 - j] = intArr[j];
		}
		i = l;
		j = r;
		for (int k = l; k <= r; k++) {
			compareCounter++;
			if (arr[i] <= arr[j]) {
				writeCounter++;
				intArr[k] = arr[i];
				i++;
			} else {
				writeCounter++;
				intArr[k] = arr[j];
				j--;
			}
		}
	}