0% found this document useful (0 votes)
2 views

Lecture 11 - Merge Sort

The document provides an overview of the Merge Sort algorithm, which involves recursively dividing a list into smaller sub-lists, sorting them, and then merging them back together. It outlines the process of dividing the list, sorting the sub-lists, and combining them to achieve a sorted sequence. Additionally, it includes examples and pseudocode to illustrate the algorithm's implementation.

Uploaded by

Saad Ashraf
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
2 views

Lecture 11 - Merge Sort

The document provides an overview of the Merge Sort algorithm, which involves recursively dividing a list into smaller sub-lists, sorting them, and then merging them back together. It outlines the process of dividing the list, sorting the sub-lists, and combining them to achieve a sorted sequence. Additionally, it includes examples and pseudocode to illustrate the algorithm's implementation.

Uploaded by

Saad Ashraf
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 55

CS-251 – Design and Analysis of Algorithms

Instructor: Dr. Zuhair Zafar


Lecture# 11: Merge Sort

1
Merge Sort
• Idea: Order a list of values by recursively dividing the list in half until
each sub-list has one element, then recombining

• More specifically:
• Divide the n element sequence to be sorted into two subsequences
of n/2 elements each.
• Conquer: Sort the two subsequences to produce the sorted answer.
• Combine: Merge the two sorted sub sequences to produce the
sorted answer.

mergeSort(0, n/2-1) mergeSort(n/2, n-1)

2
sort merge(0, n/2, n-1) sort
Merge Sort
Base Case: When the sequences to be sorted has length 1.

Unsorted
Sorted 66
12 108
14 56
34 14
56 89
66 12
89 108
34

Divide
Merge Divide
Merge

66
14 108
56 56
66 108
14 89
12 12
34 34
89

Divide
Merge Divide
Merge Divide
Merge Divide
BCase
Merge

66
66 108
108 56
14 14
56 89
12 12
89 34

Merge
Divide
BCase Divide
BCase
Merge Divide
BCase
Merge Divide
BCase
Merge
3
66 108 56 14 89 12
Merge Sort
5 1 3 4 2 6

4
Merge Sort
5 1 3 4 2 6

5 1 3 4 2 6

5
Merge Sort
5 1 3 4 2 6

5 1 3 4 2 6

5 1 3 4 2 6

6
Merge Sort
5 1 3 4 2 6

5 1 3 4 2 6

5 1 3 4 2 6

5 1 3 4 2 6

7
Merge Sort
5 1 3 4 2 6

5 1 3 4 2 6

5 1 3 4 2 6

5 1 3 4 2 6

1 5 3 2 4 6

8
Merge Sort
5 1 3 4 2 6

5 1 3 4 2 6

5 1 3 4 2 6

5 1 3 4 2 6

1 5 3 2 4 6

1 3 5 2 4 6
9
Merge Sort
5 1 3 4 2 6

5 1 3 4 2 6

5 1 3 4 2 6

5 1 3 4 2 6

1 5 3 2 4 6

1 3 5 2 4 6
10

1 2 3 4 5 6
Merge Sort
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 11
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑠𝑜𝑟𝑡𝑒𝑑 𝑠𝑜𝑟𝑡𝑒𝑑
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 12
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 𝑅
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 13
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 𝑅
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 14
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 𝑅 2 4 6 9
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 15
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 16
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 17
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 18
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 19
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 20
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 21
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 22
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 3 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 23
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 24
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 25
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 26
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 7 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 27
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 28
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 29
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 30
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 8 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 31
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 32
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 33
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 34
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 2 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 35
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 36
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 37
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 38
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 4 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 39
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 40
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 41
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 42
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 6 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 43
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 44
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 45
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 46
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 47
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 48
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1
𝑒𝑙𝑠𝑒 49
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞ 𝐴 1 3 7 8 2 4 6 9
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟 Unsorted Arrays
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1 𝐴 1 2 3 4 6 7 8 9
𝑒𝑙𝑠𝑒 Arrays Sorted 50
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞
𝑅 𝑛2 + 1 = ∞ 𝐴 1 3 7 8 2 4 6 9
𝑖 = 1, 𝑗 = 1
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟 Unsorted Arrays
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖
𝑖 =𝑖+1 𝐴 1 2 3 4 6 7 8 9
𝑒𝑙𝑠𝑒 Arrays Sorted 51
𝐴 𝑘 = 𝑅[𝑗]
𝑗=𝑗+1 Space Complexity of Merge Procedure = 𝑂(𝑛)
}
Merge Sort Example
𝑘

𝑴𝒆𝒓𝒈𝒆 𝑨, 𝒑, 𝒒, 𝒓
{ 𝐴 1 2 3 4 6 7 8 9
𝑛1 = 𝑞 − 𝑝 + 1
𝑛2 = 𝑟 − 𝑞
𝑝 𝑞 𝑞+1 𝑟
𝐿𝑒𝑡 𝐿 1, … , 𝑛1 + 1 & 𝑅 1 … 𝑛2 + 1
𝑏𝑒 𝑛𝑒𝑤 𝑎𝑟𝑟𝑎𝑦𝑠
𝑓𝑜𝑟 𝑖 = 1 𝑡𝑜 𝑛1 𝐿 1 3 7 8 ∞ 𝑅 2 4 6 9 ∞
𝐿 𝑖 =𝐴 𝑝+𝑖−1
𝑓𝑜𝑟 𝑗 = 1 𝑡𝑜 𝑛2
𝑅 𝑗 =𝐴 𝑞+𝑗 𝑖 𝑗
𝐿 𝑛1 + 1 = ∞ 𝐴 1 3 7 8 2 4 6 9
𝑅 𝑛2 + 1 = ∞
𝑖 = 1, 𝑗 = 1 Unsorted Arrays
𝑓𝑜𝑟 𝑘 = 𝑝 𝑡𝑜 𝑟
𝑖𝑓 𝐿 𝑖 ≤ 𝑅 𝑗
𝐴𝑘 =𝐿 𝑖 𝐴 1 2 3 4 6 7 8 9
𝑖 =𝑖+1
Arrays Sorted 52
𝑒𝑙𝑠𝑒
𝐴 𝑘 = 𝑅[𝑗]
Time Complexity of Merge Procedure = 𝑂 𝑛
𝑗=𝑗+1
}
Merge Sort
𝑴𝒆𝒓𝒈𝒆𝑺𝒐𝒓𝒕 𝑨, 𝒑, 𝒓 Space Complexity of Merge sort
{ 𝑛
𝐼𝑓 (𝑝 < 𝑟)
{
𝑝 + 𝑟ൗ 𝑛ൗ 𝑛ൗ
𝑞= 2 2 2
𝑀𝑒𝑟𝑔𝑒𝑆𝑜𝑟𝑡 (𝐴, 𝑝, 𝑞)
𝑀𝑒𝑟𝑔𝑒𝑆𝑜𝑟𝑡 (𝐴, 𝑞 + 1, 𝑟) 𝑛ൗ 𝑛ൗ 𝑛ൗ 𝑛ൗ
𝑀𝑒𝑟𝑔𝑒 (𝐴, 𝑝, 𝑞, 𝑟) 4 4 4 4
} .
} .
.
𝑂(𝑐 log 𝑛) ≈ 𝑂(log 𝑛)

𝑆𝑝𝑎𝑐𝑒 𝑐𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 𝑜𝑓 𝑚𝑒𝑟𝑔𝑒 𝑝𝑟𝑜𝑐𝑒𝑑𝑢𝑟𝑒 = 𝑂(𝑛)


53
𝑇𝑜𝑡𝑎𝑙 𝑆𝑝𝑎𝑐𝑒 𝐶𝑜𝑚𝑝𝑙𝑒𝑥𝑖𝑡𝑦 = 𝑂(𝑛 + log 𝑛)
= 𝑂(𝑛)
Merge Sort
Time Complexity of Merge sort

𝑛
𝑴𝒆𝒓𝒈𝒆𝑺𝒐𝒓𝒕 𝑨, 𝒑, 𝒓 𝑇(𝑛)
{ 𝑛ൗ 𝑛ൗ
𝐼𝑓 (𝑝 < 𝑟) 2 2
{
𝑝 + 𝑟ൗ 𝑛ൗ 𝑛ൗ 𝑛ൗ 𝑛ൗ
𝑞= 2 4 4 4 4
𝑀𝑒𝑟𝑔𝑒𝑆𝑜𝑟𝑡 (𝐴, 𝑝, 𝑞) 𝑇(𝑛ൗ2) .
𝑀𝑒𝑟𝑔𝑒𝑆𝑜𝑟𝑡 (𝐴, 𝑞 + 1, 𝑟) 𝑇(𝑛ൗ2) .
𝑀𝑒𝑟𝑔𝑒 (𝐴, 𝑝, 𝑞, 𝑟) 𝑂(𝑛) .
}
}
𝑇 𝑛 = 2 ∗ 𝑇 𝑛ൗ2 + 𝑂 𝑛
𝑇 𝑛 = 𝜃(𝑛 log 𝑛)
54
Difference

Quick Sort Merge Sort


Best Case Space Complexity: 𝑂(log 𝑛) Best Case Space Complexity: 𝑂(𝑛)
Worst Case Space Complexity: 𝑂(n) Worst Case Space Complexity: 𝑂(𝑛)
Time Complexity (Best Case): O(𝑛 log 𝑛) Time Complexity (Best Case): O(𝑛 log 𝑛)
Time Complexity (Worst Case): 𝑂(𝑛2 ) Time Complexity (Worst Case): O(𝑛 log 𝑛)
Works faster for smaller arrays Works in consistent speed for all arrays
Requires less space Requires a lot of space
No need for temporary array Needs a temporary array
Unstable sort Stable Sort
Preferred for arrays Preferred for linked lists
Internal sorting External Sorting 55
Works well with large datasets

You might also like