Upload
vidushi-pathak
View
1.814
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
Presentation By: NUPUR
Algorithm Design & Analysis
Invented byJohn von Neumann
(1903-1957) Follows divide and
conquer paradigm.
Developed merge sort for EDVAC in 1945
The key to Merge Sort is merging two sorted lists into one, such that if you have two lists X (x1x2…xm) and Y(y1y2…yn) the resulting list is Z(z1z2…zm+n)
Example:L1 = { 3 8 9 } L2 = { 1 5 7 }
merge(L1, L2) = { 1 3 5 7 8 9 }
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.
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 )
99 6 86 15 58 35 86 4 0
99 6 86 15 58 35 86 4 0
99 6 86 15 58 35 86 4 0
99 6 86 15 58 35 86 4 0
99 6 86 15 58 35 86 4 0
86 1599 6 58 35 86 4 0
99 6 86 15 58 35 86 4 0
99 6 86 15 58 35 86 4 0
86 1599 6 58 35 86 4 0
99 6 86 15 58 35 86 4 0
99 6 86 15 58 35 86 4 0
99 6 86 15 58 35 86 4 0
86 1599 6 58 35 86 4 0
99 6 86 15 58 35 86 4 0
4 0
99 6 86 15 58 35 86 0 4
4 0Merge
15 866 99 58 35 0 4 86
99 6 86 15 58 35 86 0 4
Merge
6 15 86 99 0 4 35 58 86
15 866 99 58 35 0 4 86
Merge
0 4 6 15 35 58 86 86 99
6 15 86 99 0 4 35 58 86
Merge
0 4 6 15 35 58 86 86 99
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
log n levels
• Total running time: order of nlogn• Total Space: order of n
Total time for merging: cn log n
n
n/2 n/2
n/4 n/4 n/4 n/4
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.
Best Case, Average Case, and Worst Case = O(N logN)
• Storage Requirement:
Double that needed to hold the array to be sorted.