Modify the following algorithm of Merge Sort in such a way that during every recursive call it should divide the array into three partitions instead of two. What will be effect of this modification on the running time of Merge Time? Merge-Sort (A, left, right) if left ≥ right return else middle ← (left+right)/2 Merge-Sort(A, left, middle) Merge-Sort(A, middle+1, right) Merge(A, left, middle, right) Merge(A, left, middle, right) n1 ← middle – left + 1 n2 ← right – middle create array L[n1], R[n2] for i ← 0 to n1-1 do L[i] ← A[left +i] for j ← 0 to n2-1 do R[j] ← A[middle+j] k ← i ← j ← 0 while i< n1 & j< n2 if L[i] < R[j] A[k++] ← L[i++] else A[k++] ← R[j++] while i< n1 A[k++] ← L[i++] while j < n2 A[k++] ← R[j++]
Q: Modify the following
Merge-Sort (A, left, right)
if left ≥ right return
else
middle ← (left+right)/2
Merge-Sort(A, left, middle)
Merge-Sort(A, middle+1, right)
Merge(A, left, middle, right)
Merge(A, left, middle, right)
n1 ← middle – left + 1
n2 ← right – middle
create array L[n1], R[n2]
for i ← 0 to n1-1 do L[i] ← A[left +i]
for j ← 0 to n2-1 do R[j] ← A[middle+j]
k ← i ← j ← 0
while i< n1 & j< n2
if L[i] < R[j]
A[k++] ← L[i++]
else
A[k++] ← R[j++]
while i< n1
A[k++] ← L[i++]
while j < n2
A[k++] ← R[j++]
Step by step
Solved in 4 steps