#Sorting#Computer-Science#CS251 Merge sort is a recursive algorithm. It uses a divide and conquer strategy to split the array up and recombine it in a sorted order.
Pseudocode
MergeSort(A: array, l: left index, r: right index)
if (l < r)
m <- (l+r)/2 // middle index
MergeSort(A, l, m)
MergeSort(A, m+1, r)
Merge(A, l, m, r)
end if
return A
end MergeSort
Merge Sort is NOT in place
Runtime Analysis
Merge() runs in time
Merge(A, l, m, r)
Pseudocode
Merge(A, l, m, r)
n1 <- m - l + 1
n2 <- r - m
let L and R be array of sizes n1+1 and n2+1 respectively
for (i = 0 to n1-1)
L[i] <- A[l+i]
endfor
for (j=0 to n2-1)
R[j] <- A[m+j+1]
endfor
L[n1] <- infinity, R[n2] <- infinity
i=0, j=0
for (k=l to r-1)
if (L[i] <= R[j])
A[k] <- L[i]
i+=1
else
A[k] <- R[j]
j+=1
endif
endfor
return A
end Merge
Example of merging
Final Details of Merge Sort
Merge sort runtime
Is stable Is not in place Machine friendly (more so than Heap Sort)
- Linear access of memory compared to jumping around