Professional Documents
Culture Documents
Session-6
Merge sort
Merge Sort
1. Base Case, solve the problem directly if it is small enough(only one
element).
Divide into
A FirstPart SecondPart
two halves
Recursively
Recursively sort
sort
FirstPart SecondPart
Merge
A is sorted!
Merge Sort: Algorithm
Algorithm MergeSort ( low, high)
// a[low: high] is a global array to be sorted.
// Small(P) is true if there is only one element to sort. In this case the list is already sorted.
{
if ( low<high ) then // if there are more than one element
{
// Divide P into sub problems.
// Find where to split the set.
mid := [(low+high)/2];
//solve the sub problems. Recursive Calls
MergeSort(low,mid);
MergeSort(mid+1, high);
// Combine the solutions.
Merge(low, mid, high);
}
}
Algorithm Merge(low, mid, high)
6 2 8 4
Merge-Sort(A, 0, 7)
Merge-Sort(A, 0, 1) , divide
A: 3 7 5 1
8 4
6 2
2
Merge-Sort(A, 0, 7)
Merge-Sort(A, 0, 0) , base case
A: 3 7 5 1
8 4
6
Merge-Sort(A, 0, 7)
Merge-Sort(A, 0, 0), return
A: 3 7 5 1
8 4
6 2
Merge-Sort(A, 0, 7)
Merge-Sort(A, 1, 1) , base case
A: 3 7 5 1
8 4
2
Merge-Sort(A, 0, 7)
Merge-Sort(A, 1, 1), return
A: 3 7 5 1
8 4
6 2
Merge-Sort(A, 0, 7)
Merge(A, 0, 0, 1)
A: 3 7 5 1
8 4
2 6
Merge-Sort(A, 0, 7)
Merge-Sort(A, 0, 1), return
A: 3 7 5 1
2 6 8 4
Merge-Sort(A, 0, 7)
Merge-Sort(A, 2, 3) , divide
A: 3 7 5 1
2 6
8 4
Merge-Sort(A, 0, 7)
Merge-Sort(A, 2, 2), base case
A: 3 7 5 1
2 6
8
Merge-Sort(A, 0, 7)
Merge-Sort(A, 2, 2), return
A: 3 7 5 1
2 6
8 4
Merge-Sort(A, 0, 7)
Merge-Sort(A, 3, 3), base case
A:
2 6
4
Merge-Sort(A, 0, 7)
Merge-Sort(A, 3, 3), return
A: 3 7 5 1
2 6
8 4
Merge-Sort(A, 0, 7)
Merge(A, 2, 2, 3)
A: 3 7 5 1
2 6
4 8
Merge-Sort(A, 0, 7)
Merge-Sort(A, 2, 3), return
A: 3 7 5 1
2 6 4 8
Merge-Sort(A, 0, 7)
Merge(A, 0, 1, 3)
A: 3 7 5 1
2 4 6 8
Merge-Sort(A, 0, 7)
Merge-Sort(A, 0, 3), return
A: 2 4 6 8 3 7 5 1
Merge-Sort(A, 0, 7)
Merge-Sort(A, 4, 7)
A: 2 4 6 8
3 7 5 1
Merge-Sort(A, 0, 7)
Merge (A, 4, 5, 7)
A: 2 4 6 8
1 3 5 7
Merge-Sort(A, 0, 7)
Merge-Sort(A, 4, 7), return
A: 2 4 6 8 1 3 5 7
Merge-Sort(A, 0, 7)
Merge-Sort(A,
Merge(A, 0, 3,0,7)7), done!
A: 1 2 3 4 5 6 7 8
Ex:- [ 179, 254, 285, 310, 351, 423, 450, 520, 652,861 ]
1,10
1,5 6,10
B: 5 5 15 28 30 6 10 14
L: R:
3 5 15 28 6 10 14 22
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
31 5 15 28 30 6 10 14
k=low
L: R:
3
2 15
3 28
7 30
8 6
1 10
4 14
5 22
6
i=low j=mid+1
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
1 25 15 28 30 6 10 14
L: R:
3
2 5
3 15
7 28
8 6
1 10
4 14
5 22
6
i j
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
1 25 15 28 30 6 10 14
L: R:
3
2 5
3 15
7 28
8 6
1 10
4 14
5 22
6
i j
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
1 2 3 28 30
15 6 10 14
L: R:
2 3 7 8 6
1 10
4 14
5 22
6
i j
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
1 2 3 4 6 10 14
L: R:
2 3 7 8 6
1 10
4 14
5 22
6
i j
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
1 2 3 4 5 6 10 14
L: R:
2 3 7 8 6
1 10
4 14
5 22
6
i j
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
1 2 3 4 5 6 10 14
L: R:
2 3 7 8 6
1 10
4 14
5 22
6
i j
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
1 2 3 4 5 6 7 14
L: R:
2 3 7 8 6
1 10
4 14
5 22
6
i j
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
1 2 3 4 5 6 7 8
14
L: R:
3
2 5
3 15
7 28
8 6
1 10
4 14
5 22
6
i j
Merge-Sort: Merge Example
A: 5 5 15 28 30 6 10 14
B:
1 2 3 4 5 6 7 8
L: R:
3
2 5
3 15
7 28
8 6
1 10
4 14
5 22
6
i j
A:
5 5 15 28 30 6 10 14
B: 1 2 3 4 5 6 7 8
Merge sort Analysis
If the time for the merging operations is proportional to ‘n’,
then the computing time for merge sort is described by the
recurrence relation.