2. Invented by
John von Neumann
(1903-1957)
Follows divide and
conquer paradigm.
Developed merge
sort for EDVAC in
1945
3. The key to Merge Sort is merging two
sorted lists into one, such that if you have
two lists X (x1≤x2≤…≤xm) and Y(y1≤y2≤…≤yn) the
resulting list is Z(z1≤z2≤…≤zm+n)
Example:
L1 = { 3 8 9 } L 2 = { 1 5 7 }
merge(L1, L2) = { 1 3 5 7 8 9 }
4. 1.Divide: Divide the unsorted list into two sub lists of
about half the size.
2.Conquer: Sort each of the two sub lists recursively
until we have list sizes of length 1,in which case the
list itself is returned.
3.Combine: Merge the two-sorted sub lists back into one
sorted list.
5. Merge-Sort (A, n)
if n=1 return
else
n1 ← n2 ← n/2
create array L[n1], R[n2]
for i ← 0 to n1-1 do L[i] ← A[i]
for j ← 0 to n2-1 do R[j] ← A[n1+j]
Merge-Sort(L, n1)
Merge-Sort(R, n2)
Merge(A, L, n1, R, n2 )
16. There are two basic ways to implement merge
sort:
In Place: Merging is done with only the input
array
Double Storage: Merging is done with a
temporary array of the same size as the input
array.
17. Merge-Sort Analysis
• Time, merging
n
n/2 n/2
log n levels
n/4 n/4 n/4 n/4
Total time for merging: cn log n
• Total running time: order of nlogn
• Total Space: order of n 17
18. Merge sort’s merge operation is useful in
online sorting, where the list to be sorted is
received a piece at a time,instead of all at the
beginning..
In this We sort each new piece that is received
using any sorting algorithm, and then merge it
into our sorted list so far using the merge
operation.
19. Best Case, Average Case, and Worst Case = O(N
logN)
• Storage Requirement:
Double that needed to hold the array to be sorted.