1) Determine the number of comparisons of the following search algorithm:

MergeSort(numbers - address to integer array, first - integer, last - integer)

integer middle

if first < last then

middle = (first + last) / 2

MergeSort (numbers, first, middle)

MergeSort(numbers, middle +1, last)

Merge(numbers, first, middle, middle+1, last)

end if

end MergeSort

Merge (numbers, leftFirst, leftLast, rightFirst, rightLast)

tempArray - integer array big enough to hold rightLast - leftFirst + 1 elements

integer index, saveFirst, index2

index = 0

saveFirst = leftFirst

while (leftFirst <= leftLast AND rightFirst <= rightLast) do

if numbers[leftFirst] < numbers[rightFirst] then

tempArray[index] = numbers[leftFirst]

leftFirst = leftFirst + 1

else

tempArray[index] = numbers[rightFirst]

rightFirst = rightFirst + 1

end if

index = index + 1

end while

while leftFirst <= leftLast do

tempArray[index] = numbers[leftFirst]

index = index + 1

leftFirst = leftFirst + 1

end while

while rightFirst <= rightLast do

tempArray[index] = numbers[rightFirst]

index = index + 1

rightFirst = rightFirst + 1

end while

index2 = 0

for index = saveFirst to rightLast do

numbers[index] = tempArray[index]

index2 = index2 + 1

end for

end Merge