public static void merge(Integer[] nums, Integer[] helper, int start, int middle, int end){
		for(int i = start; i < end; i++){
			helper[i] = nums[i];
		}

		//Now we merge. We will compare the left and right half, copying back the smaller
		//element from the two halves into the original array
		int helperLeft = start, helperRight = middle+1, current = start;
		while(helperLeft <= middle && helperRight <= end){
			if(helper[helperLeft] <= helper[helperRight]){
				nums[current] = helper[helperLeft];
				helperLeft++;
			}
			else{
				nums[current] = helper[helperRight];
				helperRight++;
			}
			current++;
		}

		//Copy the rest of the left side of the array into the target array
		int remaining = middle - helperLeft;
		for(int i = 0; i<= remaining; i++){
			nums[current + i] = helper[helperLeft + i];
		}
	}