private void merge(int[] first, int[] second)
{
// merge both halves into the temporary array


// declare a variable for the next element to consider in the first array

// declare a variable for the next element to consider in the second array

// declare a variable for the next open position in a

// as long as both indices are smaller than the length of the temporary array,
// move the smaller element into a, incrementing the appropriate indices

// note that only one of the two while loops
// below is executed

// copy any remaining entries of the first array into a


// copy any remaining entries of the second half into a

}