private void mergeBlock(int[] listA, int[] listB, int[] listC,
			int blockOffset, int blockSize) {

		int a = blockOffset * blockSize;
		int b = a;
		int c = blockOffset / 2 * 2 * blockSize;
		int nextOffset = (blockOffset + 1) * blockSize;
		while (a < nextOffset && b < nextOffset && a < listA.length
				&& b < listB.length) {
			if (listA[a] <= listB[b]) {
				listC[c++] = listA[a];
				a++;
			} else {
				listC[c++] = listB[b];
				b++;
			}
		}
		while (a < nextOffset && a < listA.length) {
			listC[c++] = listA[a];
			a++;
		}
		while (b < nextOffset && b < listB.length) {
			listC[c++] = listB[b];
			b++;
		}

	}