private void merge(int[] arr, int left, int middle, int right) {
		int[] b = new int[arr.length];
		int rightIndex = middle + 1;// 右边的起始位置
		int originalLeft = left;// 原始左边的起始位置
		int bIndex = left;// 新数组索引
		
		while (left <= middle && rightIndex <= right) {
			if (arr[left] <= arr[rightIndex]) {// 从两个数组中选取较小的数放入中间数组
				b[bIndex++] = arr[left++];
			} else {
				b[bIndex++] = arr[rightIndex++];
			}
		}
		
		// 将剩余的部分放入中间数组
		while (left <= middle) {
			b[bIndex++] = arr[left++];
		}
		while (rightIndex <= right) {
			b[bIndex++] = arr[rightIndex++];
		}
		// 将中间数组复制回原数组
		while (originalLeft <= right) {
			arr[originalLeft] = b[originalLeft++];
		}
	}